linux之可安装模块机制.doc

上传人:白大夫 文档编号:3255274 上传时间:2019-08-06 格式:DOC 页数:2 大小:17.50KB
返回 下载 相关 举报
linux之可安装模块机制.doc_第1页
第1页 / 共2页
亲,该文档总共2页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《linux之可安装模块机制.doc》由会员分享,可在线阅读,更多相关《linux之可安装模块机制.doc(2页珍藏版)》请在三一文库上搜索。

1、linux之可安装模块机制一、背景:1.系统可见设备、应用可访问设备,需要具备设备文件节点,设备驱动2.所有设备驱动程序静态链接到内核会导致内核过大, 不易运行二、特点:1.可安装模块(module)是编译不链接2.运行后,动态加载到内核中3.加载操作由内核或者特权用户使用sbin执行4.机制支持选择CONFIG_MODULES二、源码分析:init/main.casmlinkage void _initstart_kernel(void).rest_init();.static noinline void _init_refokrest_init(void).kernel_thread(ke

2、rnel_init, NULL, CLONE_FS | CLONE_SIGHAND);.staTIc int _initkernel_init(void * unused).do_basic_setup();.staTIc void _initdo_basic_setup(void).do_initcalls();staTIc void_init do_initcalls(void)initcall_t *fn;for (fn =_early_initcall_end; fn LINUX_SYMBOL(_early_initcall_end) = .; *(.initcall0.init) *

3、(.initcall0s.init) *(.initcall1.init) *(.initcall1s.init) *(.initcall2.init) *(.initcall2s.init) *(.initcall3.init) *(.initcall3s.init) *(.initcall4.init) *(.initcall4s.init) *(.initcall5.init) *(.initcall5s.init)*(.initcallrootfs.init) *(.initcall6.init) *(.initcall6s.init) *(.initcall7.init) *(.in

4、itcall7s.init)#defineINIT_CALLSVMLINUX_SYMBOL(_initcall_start) = .;INITCALLSVMLINUX_SYMBOL(_initcall_end) = .;#defineINIT_DATA_SECTION(initsetup_align).init.data : AT(ADDR(.init.data) - LOAD_OFFSET) INIT_DATAINIT_SETUP(initsetup_align)INIT_CALLSCON_INITCALLSECURITY_INITCALLINIT_RAM_FS即,从init.data段中取

5、出初始化部分的代码,驱动在初始化时期进行加载module_init(camera_init);includelinuxinit.h#definemodule_init(x)_initcall(x);#define_initcall(fn)device_initcall(fn)#definedevice_initcall(fn)_define_initcall(6,fn,6)#define_define_initcall(level,fn,id) static initcall_t _initcall_#fn#id _used _attribute_(_section_(.initcall level .init) = fn此处与系统启动加载时期对应,即将驱动代码放入.initcall level .init段

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1