共 37 篇文章 |
|
阅117 转0 评0 公众公开 13-04-19 21:23 |
图:linux源代码目录结构示意图(一) scripts目录: 该目录中不包含任何核心代码,该目录下存放了用来配置内核的脚本和应用程序源码。(四) Include目录: 这 个目录包含linux源代码目录树中绝大部分头文件,每个体系架构都在该目录下对应一个子目录,该子目录中包含了给定体系结构所必需的宏定义和内联函数。Usr目录:该目录中的代码为内核... 阅15678 转130 评0 公众公开 13-04-10 17:01 |
Oops在Linux 2.6内核+PowerPC架构下的前世今生。CFG_OOPS_RD_TEST宏控制是否进行读测试,以验证内核态log是否记录成功-sh-3.1# insmod /usr/local/esw/drivers/oopslog.koUsing fallback suid methodoops_log module loaded successfully!oops_log: oops_log test!!!!!!!!!!所有的oops都将以int die(const char *str, struct pt_regs *regs, l... 阅1074 转4 评0 公众公开 13-04-09 00:21 |
Linux Call Trace原理分析。void show_regs(struct pt_regs * regs)函数中,会调用show_stack函数,这个函数会打印系统的内核态堆栈。在GPR1指向的栈空间,第一个DWORD为上一级调用函数的Frame Header指针(Back Chain Word),第二个DWORD是当前函数在上一级函数中的返回地址(LR Save Word)。得到函数的地址后,可以通过符号表得到函数名字... 阅842 转1 评0 公众公开 13-04-03 19:35 |
因为 Linux 内核一般都会在 RAM 中运行,所以在调用 Linux 内核之前 bootloader 必须设置和初始化 RAM,为调用 Linux内核做好准备。start_kernel是所有 Linux 平台进入系统内核初始化后的入口函数,它主要完成剩余的与硬件平台相关的初始化工作,在进行一系列与内核相关的初始化后,调用第一个用户进程-init 进程并等待用户进程的执行,这样整... 阅54 转2 评0 公众公开 13-03-26 16:14 |
[*] Enable loadable module support ---> // 打开可加载模块支持,如果打开它则必须通过”make modules_install”把内核模块安装在/lib/modules/中这个选项可以让你的内核支持模块。<*> /dev/cpu/*/cpuid - CPU information support // 是否打开记录CPU相关信息功能。[] legacy /proc/scsi/ support <=== 我没有SCSI设备。[ ] S... 阅462 转3 评0 公众公开 13-03-26 15:11 |
linux系统有很多守护进程,大多数服务器都是用守护进程实现的。同时,守护进程完成许多系统任务,比如,作业规划进程crond、打印进程lqd等。20. daytime:使用TCP 协议的Daytime守护进程,该协议为客户机实现从远程服务器获取日期和时间的功能。26. echo-udp:使用UDP协议的服务器回显客户数据服务守护进程。另外我们还要合理选择守护进程例如i... 阅127 转1 评0 公众公开 13-03-03 00:31 |
而 device_uevent_ops 结构体定义如下:static struct kset_uevent_ops device_uevent_ops = {.filter =dev_uevent_filter,.name =dev_uevent_name,.uevent =dev_uevent,}通过该结构体的定义,就可以知道上面分析的一些回调例程的出处了。 阅2739 转6 评0 公众公开 13-02-13 22:28 |
这个定义在sparse里也有,内核代码是在2.6.6-rc1版本变到2.6.6-rc2的时候被Linus加入的,经过我的艰苦的查找,终于查找到原因了,知道了为什么Linus要加入这个定义,原因是这样的:有人发现在代码编译的时候,编译器对变量的检查有些苛刻,导致代码在编译的时候老是出问题(我这里没有去检查是编译不通过还是有警告信息,因为现在的编译器已经... 阅62 转0 评0 公众公开 13-01-16 02:54 |
THIS_MODULE ?可以通过THIS_MODULE宏来引用模块的struct module结构,试试下面的模块: #include <linux/module.h>再看看THIS_MODULE宏是什么意思,它在include/linux/module.h里的定义是85 #define THIS_MODULE (&__this_module) 是一个struct module变量,代表当前模块,与那个著名的current有几分相似,可以通过THIS_MODULE... 阅53 转0 评0 公众公开 13-01-13 03:10 |