[Fault-injection-developer] Kernel module's implementaiton in 2.5.48/2.5.49
Status: Alpha
Brought to you by:
rustyl
From: Wang, S. <sta...@in...> - 2002-11-26 08:42:47
|
Hello folks, The kernel module's implementation has been changed a lot since 2.5.48. And some of them would influence our development work: 1. kernel module's name should be specified by defining KBUILD_MODNAME 2. The in-kernel module loader had been rewrited, the modversions.h had been eliminated 3. The kernel implemented a new mechanism for get/put symbols between different modules: symbol_get(const char*)/symbol_put(const char *)/symbol_put_addr(void *). These function could get/put a symbol that had been exported by another kernel module. But there is a little bug with them, the following patch could fix this bug: diff -Naur -X dontdiff linux-2.5.49/include/linux/module.h linux-2.5.49-bugfix/include/linux/module.h --- linux-2.5.49/include/linux/module.h 2002-11-26 16:06:36.000000000 +0800 +++ linux-2.5.49-bugfix/include/linux/module.h 2002-11-26 16:01:52.000000000 +0800 @@ -86,7 +86,7 @@ /* Get/put a kernel symbol (calls must be symmetric) */ void *__symbol_get(const char *symbol); void *__symbol_get_gpl(const char *symbol); -#define symbol_get(x) ((typeof(&x))(__symbol_get(#x))) +#define symbol_get(x) ((typeof(&x))(__symbol_get(x))) /* For every exported symbol, place a struct in the __ksymtab section */ #define EXPORT_SYMBOL(sym) \ @@ -166,7 +166,7 @@ #ifdef CONFIG_MODULE_UNLOAD void __symbol_put(const char *symbol); -#define symbol_put(x) __symbol_put(#x) +#define symbol_put(x) __symbol_put(x) void symbol_put_addr(void *addr); /* We only need protection against local interrupts. */ 4. You should get a new module utiliy to cooperate with 2.5.48/2.5.49 (from http://ozlabs.org/~rusty/module-init-tools-0.7.tar.gz) For more detailed information, please read the kernel Change-log for v2.5.48 Thanks Your Sincerely, Stanley Wang SW Engineer, Intel Corporation. Intel China Software Lab. Tel: 021-52574545 ext. 1171 iNet: 8-752-1171 Opinions expressed are those of the author and do not represent Intel Corporation |