当前位置:  技术问答>linux和unix

求教!c语言代码,linux内核的

    来源: 互联网  发布时间:2017-03-31

    本文导语:  这段代码  #define __define_initcall(level,fn,id)  static initcall_t __initcall_##fn##id __used  __attribute__((__section__(".initcall" level ".init"))) = fn 我是再找module_init();的实现,一路向上到这看懵了,大婶讲解下谢谢! #define m...

这段代码
 #define __define_initcall(level,fn,id) 
static initcall_t __initcall_##fn##id __used 
__attribute__((__section__(".initcall" level ".init"))) = fn

我是再找module_init();的实现,一路向上到这看懵了,大婶讲解下谢谢!

#define module_init(x)  __initcall(x);
#define __initcall(fn) device_initcall(fn)
#define device_initcall(fn)             __define_initcall("6",fn,6)

|
回复请引用,不然神奇的csdn看不到通知.
主体是:
int pf=fn;

__attribute__这个是修饰这个变量的作用.__attribute__括号里面的东西太多了,我也就略知皮毛.

__section__ 只是其中一种.官方的请看上面的参考2网址.

个人理解,反正就是告诉编译器这个变量在编译之后会在什么位置之类的,如果没有的话我们完全不知道编译器会把它怎么实现.(定义到乱七八糟的位置/优化掉没了/其他我们不愿意发生的情况 = =)

__attribute__可以修饰函数和变量,修饰变量时可以是aligned (alignment)对齐.等等功能.反正我用过最多就是内存对齐,嘿嘿.


|

1.
__define_initcall("6",fn,6)

2.
static initcall_t __initcall_fn6 __used 
      __attribute__((__section__(".initcall" "6" ".init")))=fn
    
3.
static initcall_t __initcall_fn6 __used 
      __attribute__((__section__(".initcall6.init")))=fn

没看过内核的代码,大致推理到这一步.猜测就相当于

static int pf=fn;


这样的中心意思吧,不过就是类型复杂点,赋值可能是函数指针,手动控制地址;

在".initcall6.init"段定义了一个initcall_t类型的静态变量,变量名为__initcall_fn6,且是被使用的.并赋予一个值:fn.

理解有误的话请楼下大侠轻拍.
参考:
1. ## :
1. __section__ :


|
这个我也不好说,据我所知是gcc编译器的扩展,不是标准c语言的一部分.
看gnu的手册才是比较权威的解释.所以,看手册吧.

    
 
 

您可能感兴趣的文章:

  • [求教]内核加载模块后,这部分内容编译在内核里的吗?
  • 求教内核编译网络部分配置
  • 内核编程问题求教!!!!
  • 求教:我想学LINUX内核,不知道买什么书
  • 内核学习求教!
  • 求教,Linux下键盘输入的所有数据都会经过Linux内核吗???
  • 求教!内核挂死在calibrating delay loop。。。。处!
  • 求教:关于内核物理地址和虚拟地址的问题
  • 求教,linux内核代码关于网络部分的浅析
  • 求教——编译内核(新手大派送)
  • 求教:一进程执行过程中被同一外部中断程序大量反复中断会不会引起内核栈溢出?
  • 求教,2.6.28内核中struct net 结构作用?
  • 求教linux2.6.31内核中ide与ata的问题
  • 紧急求教: LINUX 内核编译错误 !!!!!!!!!!
  • LINUX内核解读 求教
  • 看linux0.12内核遇到个很奇怪的赋值,求教用意.
  • 内核编译问题求教!
  • 问题求教:内核启动时卡在Freeing init memory:
  • 求教一些关于socket的系列知识,以及一点内核知识。
  • 求教:gcc下的c语言sqrt
  • 求教,LINUX里用C语言读取微型数据库文件方法
  • 求教:EJB查询数据库的语言问题
  • 系统要求支持11种语言,求教!
  • c语言问题求教
  • 有谁知道JAVA语言的创建日期和作者?高分求教!
  • 求教:在Linux下的C语言中如何获取分区的剩余大小和文件的大小
  • Linux下C语言编程求教!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求教求教,shell问题...各位大哥,帮忙下
  • 400分求教: 求教一简单问题,现场给分
  • 高分求教:如何将JAVA文件(.class)制作成可执行文件(.exe),求教方法或工具推荐
  • 急!!求教linux命令的使用:统计出/bin目录中文件的个数,追加到文件filea的结尾
  • 求教:在UNIX中查找包含指定文字的文件名
  • 小白菜求教linux大鸟
  • JDK1.3.1初级问题求教
  • 初学者有问题求教!
  • 各路高手请进!高分求教,非常着急!
  • 高分求教的问题(关于SendMail设置)
  • 简单问题:从sun网站上当了个jdk1.4b3,bin后缀,求教怎么安装
  • 求教:知道当前时间,如何得到N天前的时间 ?
  • 求教:switch(condition)中的condition 必须为整型吗?
  • Linux远程访问的问题,高分求教:)
  • 求教:在Linux下如何做代理服务器?
  • 紧急求教!究竟Java里面有没有相当于C++的CPOINT的类阿?
  • 求教JAVA中XML解析问题
  • 50分求教,在JSP里如何将String转换成Double
  • 我刚装好,是不是需要配制环境变量?求教。
  • 400分求教JAVA皮肤的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,