Hey,
people are asking for comments on 2.5.x, so here goes. gcc-2.96, RH-7.3,
kernel 2.5.66 with module-init-tools-0.9.10.
* the smc-ultra networking module doesn't work. On any operation, it
returns "Device or Resource Busy".
* module_request() is still broken - it returns 0 but the specified
module isn't loaded
Now, something more problematic. I'm being told to use try_module_get()
instead of MOD_INC_USE_COUNT. Cool. Somehow, it returns 1. I had a look
at the code in linux/module.h and am a bit confused:
--
static inline int try_module_get(struct module *module)
{
int ret = 1;
if (module) {
unsigned int cpu = get_cpu();
if (likely(module_is_live(module)))
local_inc(&module->ref[cpu].count);
else
ret = 0;
put_cpu();
}
return ret;
}
--
Why does it only return 0 if the module is not alive? This sounds...
er... weird? Can someone please enlighten me?
Looking further:
--
/* Not Yet Implemented */
#define MODULE_AUTHOR(name)
#define MODULE_DESCRIPTION(desc)
#define MODULE_SUPPORTED_DEVICE(name)
#define MODULE_PARM_DESC(var,desc)
--
No wonder modinfo doesn't show any info... Even worse, the only module
parameter thing that *does* work is MODULE_PARM...
--
/* DEPRECATED: Do not use. */
#define MODULE_PARM(var,type) \
struct obsolete_modparm __parm_##var \
__attribute__((section("__obsparm"))) \
{ __stringify(var), type };
--
Interesting. What's going on here?
Ronald
(please CC me any replies, I'm not subscribed)
--
Ronald Bultje <[email protected]>
Ronald Bultje wrote:
> Now, something more problematic. I'm being told to use try_module_get()
> instead of MOD_INC_USE_COUNT. Cool. Somehow, it returns 1. I had a look
> at the code in linux/module.h and am a bit confused:
> Why does it only return 0 if the module is not alive? This sounds...
> er... weird? Can someone please enlighten me?
Presumably so you can treat the result as a boolean true/false value.
Chris
--
Chris Friesen | MailStop: 043/33/F10
Nortel Networks | work: (613) 765-0557
3500 Carling Avenue | fax: (613) 765-2986
Nepean, ON K2H 8E9 Canada | email: [email protected]
On 29 Mar 2003 00:24:14 +0100, Ronald Bultje wrote:
>people are asking for comments on 2.5.x, so here goes. gcc-2.96, RH-7.3,
>kernel 2.5.66 with module-init-tools-0.9.10.
...
>* module_request() is still broken - it returns 0 but the specified
>module isn't loaded
To summarise: RH user-space, 2.5 kernel, modules don't autoload.
This is a well-known user-space (*) bug. Fix below.
(*) Well, unless "dropping /proc/ksyms for no good reason" counts
as a 2.5 kernel bug.
--- /etc/rc.d/rc.sysinit.~1~ 2002-08-22 23:10:52.000000000 +0200
+++ /etc/rc.d/rc.sysinit 2003-01-14 03:04:57.000000000 +0100
@@ -334,7 +334,7 @@
IN_INITLOG=
fi
-if ! grep -iq nomodules /proc/cmdline 2>/dev/null && [ -f /proc/ksyms ]; then
+if ! grep -iq nomodules /proc/cmdline 2>/dev/null && [ -f /proc/modules ]; then
USEMODULES=y
fi