今天在看内核中无线的实现时,发现一个调用 subsys_initcall(cfg80211_init);搜索一些资料: subsys_initcall 的定义在 include/linux/init.h 中,定义如下: #define core_initcall(fn)    __define_initcall(fn, 1)#define core_initcall_sync(fn)   __define_initcall(fn, 1s)#define postcore_initcall(fn)…
转自:http://hnniyan123.blog.chinaunix.net/uid-29917301-id-4989879.html 在Linux2.6版本的内核中,我们经常可以看到下面的结构体的定义和初始化.这在以前的C语言书中是极少见到的.下面的一个结构体来自到Linux内核中的一部分.在这个结构体中我们可以看到有普通的整型变量,也有函数的指针. struct net_proto_family { int family; int (*create)(struct net *net, st…
答:通过生成的System.map可以查看到,主要关注__initcall_<module_entry_function>_init<level>,如: __initcall_sunxi_sram_driver_init6,模块的入口函数为sunxi_sram_driver,级别为6…
2.1 什么是指定初始化 在标准 C 中,当我们定义并初始化一个数组时,常用方法如下: ] = {,,,,,,,,}; 按照这种固定的顺序,我们可以依次给 a[0] 和 a[8] 赋值.因为没有对 a[9] 赋值,所以编译器会将 a[9] 默认设置为0.当数组长度比较小时,使用这种方式初始化比较方便.当数组比较大,而且数组里的非零元素并不连续时,这时候再按照固定顺序初始化就比较麻烦了. 比如,我们定义一个数组 b[100],其中 b[10].b[30] 需要初始化,如果还按照前面的固定顺序初始化…
针对内核3.9 系统开启时,会使用init/main.c,然后再里面调用kernel_init(),在里面会再调用do_basic_setup(),调用do_initcalls(),调用do_one_initcall(),这个函数会去把注册了所有需要初始化的系统调用一一初始化.而网络模块由于全部都是基于socket在进行,所以,相关网络模块,在do_one_initcall()中会通过core_init()调用sock_init()来把网络文件系统登记在整个linux的文件系统中.其中core_…
转自:http://blog.csdn.net/tommy_wxie/article/details/17093307 上一篇微博留下了这几个函数,现在我们来分析它们         sanity_check_meminfo();         arm_memblock_init(&meminfo, mdesc);         paging_init(mdesc);         request_standard_resources(mdesc); 在上一微博有展现根据启动参数初始化me…
linux内核中提供了流量控制的相关处理功能,相关代码在net/sched目录下:而应用层上的控制是通过iproute2软件包中的tc来实现, tc和sched的关系就好象iptables和netfilter的关系一样,一个是用户层接口,一个是具体实现. 流控包括几个部分: 流控算法, 通常在net/sched/sch_*.c中实现, 缺省的是FIFO, 是比较典型的黑盒模式, 对外只看到入队和出对两个操作; 流控结构的操作处理; 和用户空间的控制接口, 是通过rtnetlink实现的. 以下内…
Linux内核中,SPI和I2C两个子系统的软件架构是一致的,且Linux内核的驱动模型都以bus,driver,device三种抽象对象为基本元素构建起来.下文的分析将主要用这三种抽象对象的创建过程及其相互调用关系和作用来进行说明. 1.      SPI各对象的初始流程 1.1 创建spi_bus_type总线 postcore_initcall(抽象层spi.c中) bus_register(&spi_bus_type); class_register(&spi_master_cla…
[摘要]本文以Linux 2.6.25 内核为例,分析了基于platform总线的驱动模型.首先介绍了Platform总线的基本概念,接着介绍了platform device和platform driver的定义和加载过程,分析了其与基类device 和driver的派生关系及在此过程中面向对象的设计思想.最后以ARM S3C2440中I2C控制器为例介绍了基于platform总线的驱动开发流程. [关键字]platform_bus, platform_device, resource , pl…
转载:http://www.cnblogs.com/leaven/archive/2010/08/06/1794293.html 更多文档参见:http://pan.baidu.com/s/1dDvJRaD 作者:刘洪涛,华清远见嵌入式学院金牌讲师,ARM ATC授权培训讲师. 看了一些网络上关于linux中断实现的文章,感觉有一些写的非常好,在这里首先感谢他们的无私付出,然后也想再补充自己对一些问题的理解.先从函数注册引出问题吧. 一.中断注册方法 在linux内核中用于申请中断的函数是req…