当前位置: 首页 > news >正文

内蒙古自治区网站建设_网站建设公司_网站开发_seo优化

培训网站视频不能拖动怎么办,百度竞价推广常用到的工具,免费网站下载直播软件大全,xenforo和wordpress__init#xff0c; __initdata等属性标志#xff0c;是要把这种属性的代码放入目标文件的.init.text节#xff0c;数据放入.init.data节──这一过程是通过编译内核时为相关目标平台提供了xxx.lds链接脚本来指导ld完成的。 对编译成module的代码和数据来说#xff0c;当模…__init __initdata等属性标志是要把这种属性的代码放入目标文件的.init.text节数据放入.init.data节──这一过程是通过编译内核时为相关目标平台提供了xxx.lds链接脚本来指导ld完成的。  对编译成module的代码和数据来说当模块加载时__init属性的函数就被执行;对 静态编入内核的代码和数据来说当内核引导时 do_basic_setup()函数调用do_initcalls()函数后者负责所有.init节函数的执行。 在初始化完成后用这些关键字标识的函数或数据所占的内存会被释放掉。1 所有标识为__init的函数在链接的时候都放在.init.text这个区段内 在这个区段中函数的摆放顺序是和链接的顺序有关的是不确定的。 2 所有的__init函数在区段.initcall.init中还保存了一份函数指针 在初始化时内核会通过这些函数指针调用这些__init函数指针 并在整个初始化完成后释放整个init区段包括.init.text.initcall.init等 注意这些函数在内核初始化过程中的调用顺序只和这里的函数指针的顺序有关 和1中所述的这些函数本身在.init.text区段中的顺序无关。 在2.4内核中这些函数指针的顺序也是和链接的顺序有关的是不确定的。 在2.6内核中initcall.init区段又分成7个子区段分别是 .initcall1.init .initcall2.init .initcall3.init .initcall4.init .initcall5.init .initcall6.init .initcall7.init 参见include/linux/init.h和vmlinux.lds 当需要把函数fn放到.initcall1.init区段时只要声明 core_initcall(fn); 即可。 其他的各个区段的定义方法分别是 core_initcall(fn) ---.initcall1.init postcore_initcall(fn) ---.initcall2.init arch_initcall(fn) ---.initcall3.init subsys_initcall(fn) ---.initcall4.init fs_initcall(fn) ---.initcall5.init device_initcall(fn) ---.initcall6.init late_initcall(fn) ---.initcall7.init 而与2.4兼容的initcall(fn)则等价于device_initcall(fn)。 各个子区段之间的顺序是确定的即先调用.initcall1.init中的函数指针 再调用.initcall2.init中的函数指针等等。 而在每个子区段中的函数指针的顺序是和链接顺序相关的是不确定的。 在内核中不同的init函数被放在不同的子区段中因此也就决定了它们的调用顺序。 这样也就解决了一些init函数之间必须保证一定的调用顺序的问题。 2. Linux Kernel源代码中与段有关的重要宏定义 . 关于__init、__initdata、__exit、__exitdata及类似的宏 打开Linux Kernel源代码树中的文件include/init.h可以看到有下面的宏定议 #define __init  __attribute__ ((__section__ (.init.text)))  __cold #define __initdata    __attribute__ (( __section__ (.init.data))) #define __exitdata   __attribute__ (( __section__ (.exit.data))) #define __exit_call  __attribute_used__ __attribute__ (( __section__ (.exitcall.exit))) #define __init_refok  oninline __attribute__ ((__section__ (.text.init.refok))) #define __initdata_refok __attribute__ ((__section__ (.data.init.refok))) #define __exit_refok noinline __attribute__ ((__section__ (.exit.text.refok))) ......... #ifdef MODULE #define __exit  __attribute__ (( __section__ (.exit.text))) __cold #else #define __exit __attribute_used__ __attribute__ ((__section__ (.exit.text))) __cold #endif 对于经常写驱动模块或翻阅Kernel源代码的人看到熟悉的宏了吧__init, __initdata, __exit, __exitdata。 __init 宏最常用的地方是驱动模块初始化函数的定义处其目的是将驱动模块的初始化函数放入名叫.init.text的输入段。当内核启动完毕后这个段中的内存会被释放掉供其他使用。 __initdata宏用于数据定义目的是将数据放入名叫.init.data的输入段。其它几个宏也类似。 另外需要注意的是在以上定意中用__section__代替了section。还有其它一些类似的宏定义这里不一一列出其作用都是类似的。   模块加载分为动态加载和静态加载。 所谓静态加载就是开机加载系统时将模块加载上去这就是编译进内核。 而动态加载就是在开机以后将模块加载上去这就是编译成模块!   init_module是默认的模块的入口,如果你想指定其他的函数作为模块的入口就需要 module_init函数来指定,比如 module_init   (your_func); 其中your_func是你编写的一个函数的名称.   init_module()是真正的入口module_init是宏如果在模块中使用最终还是要转换到init_module()上。 如果不是在模块中使用module_init可以说没有什么作用。总之使用module_init方便代码在模块和非模块间移植。
http://www.lebaoying.cn/news/81238.html

相关文章:

  • wordpress 思维导图宁波seo关键词优化
  • 旅游便宜的网站建设工作组赴沈阳爆炸现场
  • 建购物网站如何运营网站建设费用多少
  • 网站建设工作的函安陆网站开发
  • 网站外链内链怎么做wordpress商品分类
  • 免费的200m网站空间网页模板
  • 用6数字域名做网站的是安卓免费翻外墙的app
  • 网站开发摊销年限最好看中文字幕国语电影
  • seo工具共享网站专业做包装设计网站
  • 做论坛网站价格网站搭建 保定
  • 广州微信网站建设公司凡客诚品还有人买吗
  • 个人备案 网站内容旅游类网站开发任务书
  • 织梦网站地图怎么做xmlphp手机wap网站源码
  • 免费建手机网站的软件影视公司宣传片
  • 郑州做网站哪个公司好企业网站cms 开源
  • 营销型网站开发方案威海建设公司网站
  • 阜新网站开发公司wordpress能开发app
  • 西安网站建设平台怎么看wordpress用了哪个主题
  • 游戏发卡中心网站源码工厂管理系统软件
  • 婚纱摄影网站开发背景淘宝做网站 评价话语
  • 上饶专业的企业网站开发公司有哪些做企业网站的
  • 企业网站建站方案wordpress 制作微信小程序
  • 制作一个动态企业网站网站在线制作平台
  • 免费视频素材网站有哪些wordpress vip会员插件
  • 网站建设企业云市场三丰云怎么做网站
  • 做搜狗网站点击赚钱免费微信小程序模板库
  • 建设网站列表上海aso优化公司
  • 青海营销网站建设服务上海网站设计要多少钱
  • 路北网站制作宿迁企业做网站
  • 建搜索引擎网站一个网站开发的权限