ChinaUnix.net
相关文章推荐:

module_init

(版本为2.6.17.7) 内核初始化设备驱动的过程:start_kernel()->rest_init()->do_basic_setup()->do_initcalls() 函数do_initcalls如下: for (call = __initcall_start; call < __initcall_end; call++) {//循环调用__initcall_start与__initcall_end之间函数 ......... result = (*call)(); ......... } 关于module_init的定义如下: #define __define_initcall(level,fn) \ ...

by 小z - 内核源码 - 2008-07-23 21:13:03 阅读(6599) 回复(4)

相关讨论

module_init(),定义的模块初始化函数返回值必须是正整数吗?为什么我返回return -1,insmod的时候就会报错。

by babyliu6 - 驱动开发 - 2009-06-03 13:42:00 阅读(3193) 回复(2)

在linux下的驱动函数都有module_init(x)和module_exit(x)在linux内核里都定义成一个宏例如: #define module_init(x) \ int init_module(void) __attribute__((alias(#x))); \ extern inline __init_module_func_t __init_module_inline(void) \ { return x; } 我的问题是这个宏是怎么理解的?具体的说是经过这个宏定义后函数module_init(x)理解为是int init_module(void) __attribute__((alias(#x))); 还是extern inline...

by chenweiming507 - C/C++ - 2009-01-09 10:29:47 阅读(17339) 回复(4)

[code] #include module.h> // Needed by all modules #include // Needed for KERN_ALERT #include init.h> // Needed for the macros module_LICENSE("GPL"); static int hello_2_init(void) { printk(KERN_ALERT"Hello, world 2\n"); return 0; } static void hello_2_exit(void) { printk(KERN_ALERT"Goodbye, world 2\n"); } module_init(hello_2_init); module_exit(h...

by jerryhua - 内核源码 - 2008-03-17 09:14:04 阅读(4497) 回复(9)

问个低级的问题 驱动一定要有module_init module_exit 吗??? 有人说必须的, 我看不见得吧。。。

by wukui1008 - 内核源码 - 2013-06-14 16:45:24 阅读(857) 回复(1)

新手刚学驱动开发,请教下面的代码, 如果输入的参数who为空,我这边打印init failed,但是实际上module已经加载到内核中了, 想问下,如果我想让参数为空时不加载该模块,应该怎么改?直接调用module_exit吗?有什么好的错误处理机制吗?谢谢。[code]#include init.h> #include module.h> #include #include module_LICENSE("Dual BSD/GPL"); static char *who; static int tim...

by sustainable012 - 嵌入式开发 - 2013-12-20 09:55:20 阅读(1073) 回复(4)

我虚拟机装的是redhat9 hello.c代码如下:[code]#ifndef _KERNEL_ #define _KERNEL_ #endif #ifndef module #define module #endif #includemodule.h> //#include #include #includeinit.h> #include int test_init(); void test_exit(); module_init(test_init); module_exit(test_exit); int test_init() { printk("test init ok\n"); ...

by 0vk0 - 嵌入式开发 - 2010-07-28 00:32:39 阅读(4263) 回复(10)

想在2.6.15内核中加入一些网络参数。这部分以单独的目录项 如linux-2.6.15/cfg/下, 在启动时从flash中得到参数的内容, 所以这部分中必要在网络模块加载前以经启动,这部分提供一些全局变量与调用接口供linux-2.6.15/net/下的模块调用,二者都以module_init方式加入内核,然而2.6中初始化函数都用module_init(fn)声明的话,则实际上等价于device_initcall(fn), 执行顺序则不定,所以我将前者放在linux-2.6.15/下主makefile最先编...

by s.t_seeyou - 内核源码 - 2009-11-17 17:34:15 阅读(3442) 回复(0)

想在2.6.15内核中加入一些网络参数。这部分以单独的目录项 如linux-2.6.15/cfg/下, 在启动时从flash中得到参数的内容, 所以这部分中必要在网络模块加载前以经启动,这部分提供一些全局变量与调用接口供linux-2.6.15/net/下的模块调用,二者都以module_init方式加入内核,然而2.6中初始化函数都用module_init(fn)声明的话,则实际上等价于device_initcall(fn), 执行顺序则不定,所以我将前者放在linux-2.6.15/下主makefile最先编...

by s.t_seeyou - 内核源码 - 2009-11-17 15:06:17 阅读(2984) 回复(0)
by 故哈 - 内核源码 - 2010-02-01 17:14:47 阅读(1516) 回复(6)

小弟初学驱动编程,想熟悉下环境,就编了个小程序,但出现问题,求助各位大侠! 我虚拟机装的是redhat9 hello.c代码如下: #ifndef _KERNEL_ #define _KERNEL_ #endif #ifndef module #define module #endif #includemodule.h> //#include #include #includeinit.h> #include int test_init(); void test_exit(); module_init(test_init); module_ex...

by caizx - 嵌入式开发 - 2009-11-14 23:41:52 阅读(1439) 回复(3)