自定义博客皮肤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)
  • 收藏
  • 关注

linux内核中platform框架中的一个小技巧

先给出函数原型: struct platform_device *platform_device_alloc(const char *name, int id){struct platform_object *pa; pa = kzalloc(sizeof(struct platform_object) + strlen(name), GFP_KERNEL);if (pa) {strcpy(p...

2011-04-29 21:59:00 51

linux双向链表分析之list_del中的技巧

linux内核的双向链表是比较经典的东西,网上分析链表的同志基本分析了99%,就差了1%。那就是list_del函数。先给出函数原型: #ifdef CONFIG_ILLEGAL_POINTER_VALUE# define POISON_POINTER_DELTA _AC(CONFIG_ILLEGAL_POINTER_VALUE, UL)#else# define POISON_POINTER_...

2011-04-28 18:55:00 262

Linux内核LED模块分析(二)

Linux内核LED模块分析(二)上次分析到那里后,还是有些同志说看不懂,那我就继续分析一把我认为不需要继续分析的东西吧。上回分析了 led_cdev和trigger的关系后就没有继续说了。有同志还是没明白怎么调用的。干活的函数是:static void led_heartbeat_function(unsigned long data){struct led_classdev *led_cde...

2011-04-28 14:49:00 63

Linux内核LED模块分析(一)

应群里几位聊的好的哥们的邀请,要我分析一个内核模块。我后面就选了LED模块分析,LED模块分析不算难,但 要说清楚其实还是很挑战的。今天俺的文章被推荐到首页了。挺有成就感的。我的文章虽然不登大雅之堂,但只 要能给到大家一起指点,哪怕就一点点我就心满意足了。好了,闲话不多说了,开始我们的linux内核之旅吧。这一节是应群里几位兄弟的要求讲LED模块,我稍微看了一下,就挑了一个最软的柿子来捏。怎么...

2011-04-28 10:02:00 82

软件工程师--经验之谈

分享一位软件工程师的7年总结,经验之谈,借此导航自己人生。 1、分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。” 其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈! 2、一定要确定自己的发展方向,并为此目的制定可行的计划。 ...

2011-04-27 17:16:00 97

软件开发工程师的经验之谈

分享一位软件工程师的7年总结,经验之谈,借此导航自己人生。 1、分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。” 其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈! 2、一定要确定自己的发展方向,并为此目的制定可行的计划。 ...

2011-04-27 16:45:00 145

WeakReference,SoftReference 和 PhatomReference 浅析

前几天发了一篇关于垃圾收集的帖子,自己也不是这方面的专家,所以肯定有很多问题和错误,也请大家多多包涵和指教。 今天再进一步谈一下这个几个Reference吧。老实说,这几个名词我也是最近才听说,平时也没有实际使用过,但是确实在java 1.2就存在的,看来真的是学无止境啊。 softly reachable:The object is the referent of a SoftRef...

2011-04-24 15:16:00 56

netfilter框架分析

本来是不打算写这种基础性的东西的,但是有很多同志经常问我(有同事也有网友)。所以就写一下吧,这个是理解LINUX内核网络子系统的基础,ip conntrack等都是依赖这些基础的。好的,闲话不多说了。来正文。 其实netfilter就是依靠一个全局的二维数组nf_hooks[][].可以把这个玩意看成一个8*32的矩阵。矩阵的每个成员就是一个双向链表节点。看看,又是双向链表,内核中双向链表的地位...

2011-04-23 18:06:00 119

双向链表在内核中的超然地位

玩过内核的人都知道,linux内核中的链表是比较有特色的。利用一个container_of宏来实现链表到数据的计算,不可谓不精妙。(如果不知道的同志赶快上网看看)为什么linux内核要用双向链表?为什么不用单向链表?这是因为双向链表的灵活性,两边都有指针域,更方便增加与删除。有的同志可能会说只要存了单向链表上一步的指针,一样可以删,双向链表没必要。还是那句话,请先看看linux内核中的代码,再来评...

2011-04-18 21:34:00 62

一个比较有意思的宏

#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); })) 这个宏为编译时判断e是否为0 假如e等于非0值,则!(e)为0,则!!(e)为1。再struct{int:-1}则会编译出错。 假如e等于0,则!(e)为1,则!!(e)为0。再struct{int:-0},实际等价于struct{int:0}则编译通过。...

2011-04-15 19:06:00 50

想成为嵌入式软件工程师的新手可以看看

时下有非常多时髦的名词,嵌入式工程师,3G开发工程师,ANDROID开发工程师等等。 这些名词我想十有八九是一些培训机构发明的。不是说培训机构不好,培训机构针对市场的要求提出一个名词,然后有针对性的开相应的课程没有啥不对。 但是我知道,大家,尤其是想进入软件开发这张门而尚未进入的新手,很容易被一些花哨的名词给搞混。 在这里我给大家说说我个人的看法。 首谈嵌入式了: 其实剥掉外面这层华丽的...

2011-04-15 18:57:00 127

JAVA中的位运算

JAVA中的位运算 Java 位运 算 符 位运算符用来对二进制位进行操作 ,Java中提 供 了 如 下所 示 的 位 运 算符 : 位 运 算 符 (>>,<<,>>>,&,|,^,~ ) ,位运 算 符 中 ,除 ~ 以 外 ,其余 均 为 二 元 运 算 符 。 操 作 数 只 能 为 整 型 和字 符 型 数 据 。 基础知识 补码 所有的整数类型(除了c...

2011-04-13 10:38:00 237

linux调试

总结一下我调试linux的几种常用手段。 1.printk。经典的方法,有时候最笨的往往是最有效的。 2.打开oops。得出有效信息然后对照相应的C代码调试。 3.coredump。只能调试应用程序,因为coredump的潜规则是:linux内核是稳定的,并由内核产生。 4.打桩。对相应的函数用宏重新定义,或者在结构体中增加相应的调试成员,然后在合适的地方有效利用此成员。比如重构mallo...

2011-04-10 11:52:00 69

SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和...

2011-04-07 17:38:00 58

SQL语句删除重复记录

问题:如何把具有相同字段的记录删除,只留下一条。 例如:表test里有id,name字段,如果有name相同的记录只留下一条,其余的删除。name的内容不定,相同的记录数不定。 用SQL语句删除重复记录的方法: 1、将重复的记录记入temp1表 select [标志字段id],count(*) into temp1 from [表名] group by [标志字段id] ...

2011-04-07 17:34:00 53

高手是怎样炼成的

高手,大牛,专家,这是对一个技术人员最高的评价。 前经看过几篇文章,什么程序员的十重境界,程序的几个层次等等。 发现大家对高手的理解各有不同,但和我所理解的高手差别还是挺大的。 其实我只想对高手进行分析,找到某种共性,使自已在学习成长的过程中往高手这上面靠。 其实我想说天赋还是很重要的。 曾仕强教授在讲解易经的时候说过一句话:无可奈何就是命。爱恩斯坦说的比较隐晦:天才是99%的汗水加1%...

2011-04-05 15:07:00 65

linux反汇编旁门左道小技巧一则

我个是我自已在开发过程中发现的一个小技巧。不算什么牛X的技巧。只是帖出来大家一起欣赏一下而已。权当一道小菜吧。 gdb反汇编调试技巧 在linux下很多时候我们需要反汇编我们的源码,然后根据所得到的信息(例如相关的寄存器)进一步定位问题所在。这时候我们很多时间用objdump或者直接用gdb。在用gdb的情况下可以对可疑的函数采用disassemble funcnam...

2011-04-01 22:51:00 76

linux内核里的工作队列及内核通知链

看懂后总结了一下,其实就两句话: 工作队列初始化就是开启一个内核线程,然后内核线程会将你注册在链表上的动作(函数)按顺序执行,执行完后将函数从链表上移除。 内核通知链其实就是一个回调函数链。你首先需要将你要执行的动作注册到链表上。然后在一个地方call通知链的时候,CALL函数就会将链上注册的函数顺序执行一遍。再CALL一次就再执行一次。...

2011-04-01 22:29:00 58

ip conntrack整体框图

花了三个小时画的一个图。献给大家做为愚人节的礼物。呵呵。

2011-04-01 22:18:00 64

项目人员搭配之我见

我一直都觉得我的耐心很差,无论是指导新人还是项目协调,我都觉得我是同事当中最差的。 我最喜欢说的一句话就是:与其分出去不如自已做,求人不如求已。事实上我也是这么做的。 我领导对我的评价是:野路子多,分析处理问确实有一套,如果照现在这样发展下去,可以成为一个很好的砖瓦匠,但永远成不了总设计师。 倒不是我骄傲,我只是现在不愿意管项目而已,因为我觉得我目前的重心是技术,所以不想分心去想别的而已,要...

2011-04-01 22:08:00 81

空空如也

空空如也

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

TA关注的人

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