- 博客(20)
- 收藏
- 关注
原创 定位可动态加载的内核模块的OOPS代码行
<br />http://linux.chinaunix.net/bbs/archiver/?tid-1097586.html<br /> 定位可动态加载的内核模块的OOPS代码行<br />最近又仔细学习了albcamus版主提供的《定位Oops的具体代码行》(链接:[url]http://linux.chinaunix.net/bbs/viewthread.php?tid=1008573[/url]),并且进行了实践。因此这里简单总结一下,并且以实例的方式给出定位可动态加载模块Oops信息的方法。<br
2011-03-25 22:36:00
930
原创 突破Linux内核模块校验机制
<br />http://notes.zerobox.org/show-396-1.html<br /> <br />1、 为什么要突破模块验证<br />Linux内核版本很多,升级很快,2个小内核版本中内核函数的定义可能都不一样,为了确保不一致的驱动程序导致kernel oops, 开发者加入了模块验证机制。它在加载内核模块的时候对模块进行校验, 如果模块与主机的一些环境不一致,就会加载不成功。<br />看下面一个例子,它简单的输出当期系统中的模块列表:<br />#include <linux/ke
2011-03-24 23:31:00
1400
原创 linux内核oops调试文章
<br />http://blogold.chinaunix.net/u/23353/showart_1904854.html<br /> <br />
2011-03-21 22:10:00
797
原创 linux进行make menuconfig时候报错的解决办法
busybox 运行 make menuconfig时候报错的解决办法!!!2010-11-27 12:14[jiangwei@localhost makerom]$ make bbcfgBeginning to config busyboxmake -C /home/jiangwei/blenv-unicom//rootfs/trunk/busybox-1.11.3 menuconfigmake[1]: Entering directory `/home/jiangwei/blenv-unicom/roo
2011-03-15 11:27:00
1974
原创 netlink
<br />http://linux.chinaunix.net/bbs/thread-822500-1-1.html<br /> <br />
2011-01-02 19:25:00
449
原创 设备驱动杂记
<br /><br />1、 大部分的编程问题其实可以划分为2个部分,提供什么能力(机制)和如何使用这些能力(策略)。如果这两方面由程序的不同部分来表达,或者甚至由不同的程序共同表达,软件包时非常揉弄故意开发和适应特殊的需求。<br />2、 一个设备驱动可以只包含<linux/sched.h>并且引用当前进程。<br />3、 在内核中可以通过包含头文件<linux/sched.h>后使用current来使用当前进程的信息。<br />例如,下面的语句打印了当前进程的进程ID和命令名称。<br
2010-12-17 10:53:00
654
原创 内核杂记
<br /><br />#define is_power_of_2(x) ((x) != 0 && (((x) & ((x) -1)) == 0)) 判断是否为2的幂<br /> <br />#include <asm/system.h><br />"void rmb(void);"<br />"void wmb(void);"<br />"void mb(void);"<br />这些函数在已编译的指令流中插入硬件内存屏障;具体的插入方法是平台相关的。rmb(读内存屏障)
2010-12-17 10:51:00
874
原创 linux 自旋锁和信号量
自旋锁最多只能被一个可执行线程持有(读写自旋锁除外)。自旋锁不会引起调用者睡眠,如果一个执行线程试图获得一个已经被持有的自旋锁,那么线程就会一直进行忙循环,一直等待下去(一直占用CPU),在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因此只能在进程上下文使用(因为中断的上下文不允许休眠)(_trylock的变种能够在中断
2010-12-13 11:36:00
14208
1
原创 linux 创建进程
<br />http://wenku.baidu.com/view/9bbd27da50e2524de5187ea1.html 好好看看这个例子<br />http://blog.youkuaiyun.com/lingdxuyan/archive/2009/12/12/4993883.aspx<br /> <br />#include <stdio.h><br />#include <stdlib.h><br />#include <unistd.h><br />int main(int argc,char ** a
2010-11-28 22:13:00
868
原创 linux中C/C++获得微秒级时间
<br />#include <stdlib.h>#include <stdio.h>#include <sys/time.h>int main(){ struct timeval dwStart; struct timeval dwEnd; unsigned long dwTime=0; int i=0,j=0; gettimeofday(&dwStart,NULL); for(i=
2010-11-22 12:08:00
7442
原创 linux信号处理、killall、SIGALRM、sigaction函数和结构体、向进程发送信号
<br /><br />向进程发送信号:<br />killall -14 stats_process_c 2>/dev/null <br />给统计中间件发送一个闹钟信号SIGALRM(14),统计中间件stats_process_c接收到此信号后执行特定函数对统计文件进行处理。<br /> Linux中pause()函数使调用进城挂起直到捕捉到一个信号。只有执行了一个信号处理程序并从其返回时,pause函数才返回。<br /> <br />程序如下:<br />#include
2010-11-19 16:26:00
6995
原创 在编译的时候向内核传递宏定义
EMC3.补充语句,使下面程序if判断语句始终为真,不能改动if判断语句,即只能在之前加语句if ((*f = 0)||(void *)f == (void *)&f){ /* statements always executed*/}答:*f=0 返回 0值,因此要想if始终为真,则要求(void *)f == (void *)&f 始终返回1,即(void *)f和(void *)&f总是相等。所以可以添加 inff[10];在if之前。 对指针
2010-11-19 11:16:00
1313
原创 笔试题
<br /><br />EMC<br />3.补充语句,使下面程序if判断语句始终为真,不能改动if判断语句,即只能在之前加语句<br /><br />if ((*f = 0)||(void *)f == (void *)&f)<br />{<br /> /* statements always executed*/<br />}<br /> <br />答:*f=0 返回 0值,因此要想if始终为真,则要求(void *)f == (void *)&f 始终返回1,<br />即(v
2010-11-19 10:25:00
788
原创 linux设备驱动第三版字符设备源代码学习
<br /><br />1、 dev_t是32位无符号整形数(__u32),用于在内核中保存设备编号,包括主设备号和次设备号。<br /> <br />2、 #define MKDEV(ma,mi) (((ma) << MINORBITS) | (mi))<br />#define MKDEV(ma,mi) ((ma)<<8 | (mi))<br />dev_t 设备号类型,MKDEV是宏定义用于构造设备号类型<br /> <br />3、register_chrdev_region(dev_t
2010-11-16 15:57:00
1295
原创 linux内核可装载模块(lkm)传参机制
<br />对于如何向模块传递参数,Linux kernel 提供了一个简单的框架。其允许驱动程序声明参数,并且用户在系统启动或模块装载时为参数指定相应值,在驱动程序里,参数的用法如同全局变量。<br /> 使用下面的宏时需要包含头文件。<br /> 通过宏module_param()定义一个模块参数:<br />module_param(name, type, perm);<br />name既是用户看到的参数名,又是模块内接受参数的变量;<br />type表示参数的数据类型,是下列之一:byte,
2010-11-14 22:17:00
2813
原创 source_insight3.5字体全部变成了黑色,不能对不同类型的字段显示不同的颜色,如何解决?
<br /> 安装了source_insight3.5之后,一直使用正常,有一次不知道什么原因,再运行source_insight后字体就全部变成了黑色,不能对不同类型的字段显示不同的颜色。<br /> 解决办法如下:<br /> 这是因为source insight的显示配置文件出现了问题,可以从其他source insight能够正常工作的电脑中拷贝过来两个配置文件,然后重新运行source insight显示就正常了。<br /> 两个文件如下:<br />
2010-11-11 14:30:00
8814
原创 proc文件系统及在LKM中创建proc文件
proc文件系统简介 最初开发 /proc 文件系统是为了提供有关系统中进程的信息。但是由于这个文件系统非常有用,因此内核中的很多元素也开始使用它来报告信息,或启用动态运行时配置。 /proc 文件系统包含了一些目录(用作组织信息的方式)和虚拟文件。虚拟文件可以向用户呈现内核中的一些信息,也可以用作一种从用户空间向内核发送信息的手段。实际上我们并不会同时需要实现这两点,但是本文将向您展示如何配置这个文件系统进行输入和输出。 顺便说一下,/proc 文件系统并不是 GNU/Lin
2010-11-10 22:02:00
1496
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人