图书试读 《深入Linux设备驱动程序内核机制》(获奖名单已公布)
获奖名单已公布,详情请看:http://bbs.chinaunix.net/thread-3682984-1-1.html
内 容 简 介
这是一本系统阐述Linux设备驱动程序技术内幕的专业书籍,它的侧重点不是讨论如何在Linux系统下编写设备驱动程序,而是要告诉读者隐藏在这些设备驱动程序背后的那些内核机制及原理。作者通过对Linux内核源码抽丝剥茧般的解读,再辅之以精心设计的大量图片,使读者在阅读完本书后对驱动程序前台所展现出来的那些行为特点变得豁然开朗。
本书涵盖了编写设备驱动程序所需要的几乎所有的内核设施,比如内核模块、中断处理、互斥与同步、内存分配、延迟操作、时间管理,以及新设备驱动模型等内容。为了避免读者迷失在某一技术细节的讨论当中,本书在一个比较高的层面上进行展开,以一种先框架再细节的结构安排极大地简化了读者的阅读与学习。
本书不仅适合那些在Linux系统下从事设备驱动程序开发的专业技术人员阅读,也同样适合有志于从事Linux设备驱动程序开发或对Linux设备驱动程序及Linux内核感兴趣的在校学生等阅读。对于没有任何Linux设备驱动程序开发经验的初学者,建议先阅读那些讨论“如何”在Linux系统下编写设备驱动程序的入门书籍,然后再阅读本书来理解“为什么”要以这样或者那样的方式来编写设备驱动程序。
讨论话题:1.如何学习Linux kernel,一般需要具备哪些知识点
2. 新人如何学习Linux设备驱动程序
3. 阅读完样章后,你认为此书与市场上其他Linux设备驱动类书籍有什么优缺
4. 给刚毕业的一些新手进入职场的一些建议(比如求职面试,到外企、国企与私企工作做技术的利弊等等)
同时,我们也邀请到本书的作者MagicBoy2010 与大家一起交流以上话题。
活动有奖:我们会从参与活动的网友中选出积极参与者赠送《深入Linux设备驱动程序内核机制》一本,共五本。
样章链接:http://wenku.it168.com/d_000113619.shtml
风兄动作够快啊,呵呵,我白天被那些莫名其面变态的代码搞得焦头烂额,这里倒一派祥和丰收的景象。
对了,我还是叫你谷哥是不是要好一点,因为我打风兄的拼音总是出来丰胸,我想你大概不需要这玩意吧?:lol 回复 2# MagicBoy2010
。。。。。。。。。这个真不需要~ 学习内核需要哪些知识点,大概讲一下,最近发现CU上低调的大牛还不少。C, 不用说了吧,必须的。处理器,体系架构,汇编,算法,GNU tool (GCC, make, link script, ld, as等等等等)。另外,兴趣,这个必须有,而且还要是重口味的。当然了,诸位必须有清醒的认识,掌握了内核不代表钱途光明,PHP弄通了也挺好。当年我曾是某家公司做智能手机第一人,当时用的是wince,对MSFT的东西向来不感冒,因为这玩意满足不了好奇心,make image只见满屏翻文本,然后咔嚓一下停住了,error: you must reboot me now...,你都不知道从哪里冒出来的。但是现在智能手机火得不行吧,intel拼着老脸也要进入这个市场,看来兴趣有时候和市场严重脱节,我都后悔得不行。哎,做技术的没有战略眼光,只用兴趣来驱动。好还是不好? 现在内核源码版的兄弟讨论看内核的话题,基本上有收缩战线的意思,内核这么庞大,说精通内核我认为基本上就是忽悠。一些网友说,我看那个什么网络这块挺好弄,柳暗花明啊,激动得差点内牛满面。个人感觉虽然内核庞大,但总的overview还是应该要的,你得知道你看的那块大体在内核的什么位置,与之关联的会有哪些模块。大家都在看ULK,貌似。这个书我大概翻过,没完全通读,我觉得这书的framework蛮好,但是代码有点旧了,不过对理解内核总体构架还是很适合的。如果我去update这个书的话,应该会比现在的ULK要好看,前提是我得辞职在家,除了当奶爸,只干这一件事可以。这个帖子我随便喷点,各位也不必太矜持。。。 不好意思,谷哥,我突然想到咱们要的是不是这么个形式?还是你来发问我来回答?:-L 回复 6# MagicBoy2010
不是的,你可以针对以上的话题跟大家分享经验,另外如果有网友有疑问的话,可以跟帖向你提问,你来作答。 无风之谷 发表于 2012-02-29 15:38 static/image/common/back.gif
回复 6# MagicBoy2010
哦,这样啊,我还以为等下你会说:首先给CU的网友打声招呼,简单介绍下自己嘛。呵呵 刚刚开始学LINUX下的驱动。我也是遇到不明白的地方搜索到本书的。我当时是不明白“设备节点”与“驱动程序”到底是什么关系,初步的感觉就是一个主设备号。因为手工创建设置节点时就是指定主设备号。 本帖最后由 MagicBoy2010 于 2012-02-29 16:56 编辑
刚刚开始学LINUX下的驱动。我也是遇到不明白的地方搜索到本书的。我当时是不明白“设备节点”与“驱动程序”到底是什么关系,初步的感觉就是一个主设备号。因为手工创建设置节点时就是指定主设备号。
====================================
书中图2-7与图2-10可以回答你的问题。一个设备通过cdev_add加入系统,就把这个cdev的对象加入到cdev_map管理的链表中。创建设备结点要指定设备号,是因为在打开设备结点时要通过该设备结点所对应的inode上的设备号在cdev_map中找到对应的cdev对象,所以mknod时指定的设备号一定要与驱动程序使用的设备号一致,否则你可能会调用到别的驱动设备程序提供的服务函数。