自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 873

原创 突破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 1257

原创 linux内核oops调试文章

<br />http://blogold.chinaunix.net/u/23353/showart_1904854.html<br /> <br /> 

2011-03-21 22:10:00 743

原创 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 1851

原创 好文章列表

http://www.ibm.com/developerworks/cn/linux/l-proc.html

2011-02-11 10:15:00 741

原创 netlink

<br />http://linux.chinaunix.net/bbs/thread-822500-1-1.html<br /> <br /> 

2011-01-02 19:25:00 410

原创 设备驱动杂记

<br /><br />1、  大部分的编程问题其实可以划分为2个部分,提供什么能力(机制)和如何使用这些能力(策略)。如果这两方面由程序的不同部分来表达,或者甚至由不同的程序共同表达,软件包时非常揉弄故意开发和适应特殊的需求。<br />2、  一个设备驱动可以只包含<linux/sched.h>并且引用当前进程。<br />3、  在内核中可以通过包含头文件<linux/sched.h>后使用current来使用当前进程的信息。<br />例如,下面的语句打印了当前进程的进程ID和命令名称。<br

2010-12-17 10:53:00 626

原创 内核杂记

<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 847

原创 linux 自旋锁和信号量

自旋锁最多只能被一个可执行线程持有(读写自旋锁除外)。自旋锁不会引起调用者睡眠,如果一个执行线程试图获得一个已经被持有的自旋锁,那么线程就会一直进行忙循环,一直等待下去(一直占用CPU),在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因此只能在进程上下文使用(因为中断的上下文不允许休眠)(_trylock的变种能够在中断

2010-12-13 11:36:00 13999 3

原创 linux 创建进程

<br />http://wenku.baidu.com/view/9bbd27da50e2524de5187ea1.html  好好看看这个例子<br />http://blog.csdn.net/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 833

原创 linux常用命令

<br />1、查找文件夹或文件位置<br />        find / -name <name><br /> <br /> 

2010-11-23 10:26:00 350

原创 好的软件开发人员应该具有的素质

1、快速的学习能力。

2010-11-22 16:17:00 1057 1

原创 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 7325

原创 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 6895

原创 在编译的时候向内核传递宏定义

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 1204

原创 笔试题

<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 751 1

原创 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 1266

原创 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 2712

原创 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 8613

原创 proc文件系统及在LKM中创建proc文件

proc文件系统简介      最初开发 /proc 文件系统是为了提供有关系统中进程的信息。但是由于这个文件系统非常有用,因此内核中的很多元素也开始使用它来报告信息,或启用动态运行时配置。      /proc 文件系统包含了一些目录(用作组织信息的方式)和虚拟文件。虚拟文件可以向用户呈现内核中的一些信息,也可以用作一种从用户空间向内核发送信息的手段。实际上我们并不会同时需要实现这两点,但是本文将向您展示如何配置这个文件系统进行输入和输出。      顺便说一下,/proc 文件系统并不是 GNU/Lin

2010-11-10 22:02:00 1441

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除