登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
园子
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
2.6.39发布了-最近关于内核开发的一些感受 ...
2.6.39发布了-最近关于内核开发的一些感受
[ 复制链接 ]
印萍
2025-5-29 15:44:03
linux kernel 2.6.39终于发布了,感觉从rc1到rc7,挺长时间了,这是一个值得纪念的内核版本。当然,只是对于我而言,是值得纪念的一个内核版本,从39-rc1开始,决定正式参与内核的开发了,从刚开始不成熟地改了几个format的错误,到后来改了几处函数错误,再到后来为驱动核心写了注释,一点点进步了,也越来越专业了。可以说我为开源做贡献之路是从39这个版本开始的,值得纪念。
其实感受之前也写过,以前一直觉得内核是个神圣的东西,只能每天以一种朝神的姿态去读它,去读懂它,从来没想到过去改个一句半句的,想都不敢想,觉得那完全是不可能的事情,而这毕业后一年的工作时间,进步真的是太大了,在学校的时候,每天总是有这样的事,那样的事,有这样的作业,那样的作业,其实真正安心下来看代码的时间不多,有时候容易浮燥,没有大块大块的时间去研究一个东西,而在上班的这段时间里,本来就做linux 驱动的工作,每天都是在做自己喜欢的事情,看自己喜欢的代码,大块大块的时候,虽然有时也会被一些蛋疼的事情打断,但是总体来说重心还是在这个上面。虽然有时间工作的内容有些简单,毕竟有时候做驱动,只是加一些board device,有时候或许看了好几天的一个模块,在改的时候就改几行,或者改几个参数就OK了,但是,重要的不是结果,不是这个设备工作了,正常工作了,而是对这个设备的理解,对这个驱动的理解,对driver core的理解,对linux kernel整个系统的理解。所以有时候,工作了一样长的时间,做了一样的一些工作,有做的好的,有做的不好的人。而且做了同样的事情,人跟人得到的收获也不一样。
比如做一个简单的按键的驱动,或者触摸屏的驱动,可以按照前人加过的代码,照着改一改,能工作了,OK,工作做完了,下次做的时候还是一样的步骤。最后呢,这玩意是个啥,是怎么工作起来的,不了了之,这样反而会觉得工作没有乐趣,没有一点意思。
而相反,在这样的设备工作以后,你可以进一步看看它是怎么样工作的,驱动核心是怎么样把它们驱动起来的,输入核心代码是怎么样实现的,这样的一层层的核心代码是怎么样才让你在写一个设备的驱动的时候如此简单地就完成了工作?都了解了,在做别的输入设备驱动的时候,even在做其它设备驱动的时候,也许就得心应手了,因为你理解了输入核心,理解了驱动核心,久而久之,也许对整个系统也了如执掌了,完全可以做优化整个系统的工作了。
这是我的理解,在平时的工作中,我经常从做一个简单模块的时候尽量理解得深入一些,这反而增加了不少工作的乐趣。可喜可贺。
另外,在理解得深入的前提下,我觉得要有一颗为开源做贡献的心,虽然有时候也会有私心,因为看着自己的patch被apply,也会有一些小小的虚荣心,成就感,当然这也是应该的,没有自己心理上的满足,没有成就感就没有动力。像前几天在做关于nand flash驱动的时候,看了看mtd core,发现了一个问题,当时很兴奋,那天晚上回来就马上提交了一个patch,今天被apply了,哈哈。
以前总是会觉得,kernel那么大,找出个错误多不容易啊,咋能那么容易就提一个patch呢,其实很容易,在平时看它的时候,当然前提是要读代码,在读的时候也许就发现错误了,在调试的时候也许就发现错误了,也许这个bug,你fix掉后就被采纳了呢。
做内核开发,我觉得必须要有激情,有时候发现一个bug,我会弄到大半夜去提这个patch,有时候真是生怕被别人抢先fix掉了这个bug,这是一个充满激情的地方,在邮件队列里,有的是不分日夜在那里为内核提交patch的大牛们,要向他们学习,学习这种激情。
不知不觉,扯远了,本来是想说说39内核的,昨天linus加了39的tag后,意味着39正式发布了,然后还发了一个邮件说接下来两周 要去日本参加活动,39不能再delay了,本想发个rc8的,还是先发个39,然后打开40的merge window吧,希望在回来前不会有大麻烦。就这样,39就发布了,听起来并不是那么的神圣吧,哈哈。
本来这个文章是想写写今天发patch的一个体会的,现在才开始写,只能当作PS了,哈哈。
前天发了一个关于drivers/mtd/mtdcore.c的patch,发了两个,一个被apply了,一个没有,Artem说第二个在他的l2 tree里面merge不了,因为proc函数被别人重写过了,我去他的tree看了一下,发现果然如此,我的patch是基于linus的tree发的,果然很过时,然后就想把他的l2 tree 给clone下来改一改再提个patch,但是clone一个tree实在是太费劲的,真是很不容易,于是我只把那一个文件拿了下来。然后:
1 mkdir temp_kernel<br> 2 <br> 3 cd temp_kernel<br> 4 <br> 5 git init<br> 6 <br> 7 mkdir -p drivers/mtd/<br> 8 <br> 9 cp mtdcore.c temp_kernel/drivers/mtd/<br>10 <br>11 git add *<br>12 <br>13 git commit -m "init"<br>14 <br>15 vi temp_kernel/drivers/mtd/mtdcore.c #然后就是一顿改<br>16 <br>17 git diff #看看改的有没有问题<br>18 git commit -a #写点注释<br>19 <br>20 git format-patch -s -1<br>21 <br>22 git send-email --from "Wanlong Gao <wanlong.gao@gmail.com>" --to "Artem ***<mail>" --cc "linux-kernel@vger.kernel.org" 0001-****
复制代码
这样就发出去了,patch跟直接在linus tree上改的一样,这样也很方便,非常方便,免去了clone整个tree的麻烦,因为各个维护者的tree实在是太多了,要是都clone下来,还要每天在改之前pull一下,那就是一个e梦啊。这是一个不错的方法哦,哈哈。提patch的同学可以看看。
题外话,昨天39内核发布后,今天40的window一打开,疯子一样的一顿pull 啊,晚上回来更新了一下linus tree,更新了快两个M的代码,疯狂的kernel hackers。
嗯,写得差不多了吧,有点天马行空,看的将就看吧。
对了,昨天武大对方滨兴扔鞋真是大快人心啊,出了很多IT人的一口恶气啊。。。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
如何优雅的使用RabbitMQ
分布式锁1 Java常用技术方案
浅谈我对DDD领域驱动设计的理解
游戏编程十年总结(下)
【前端性能】高性能滚动 scroll 及页面渲染优化
验证码对抗之路及现有验证机制介绍
从零开始入门 K8s | 手把手带你理解 etcd
中文写程序,何陋之有?
公司的中场
NHibernate之旅(2):第一个NHibernate程序
Android 系统缺陷不完全点评
谈谈如何从本质上理解sql语句, 存储过程,ORM之间的联系和取舍。
FFmpeg开发笔记(六十二)Windows给FFmpeg集成H.266编码器vvenc
[一步一步MVC]第一回:使用ActionSelector控制Action的选择
.net环境下跨进程、高频率读写数据
第二个iPhone应用程序:“Say Hello”
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
科技
安全
软件
签约作者
程序园优秀签约作者
发帖
印萍
2025-5-29 15:44:03
关注
0
粉丝关注
11
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9988
森萌黠
9996
堵赫然
9996
4
凶契帽
9996
5
处匈跑
9996
6
柴古香
9996
7
背竽
9996
8
斜素欣
9994
9
恐肩
9994
10
里豳朝
9994
查看更多