michile

导航

2013年2月7日

Some Important Data Structures

摘要: 记得曾经看过一点国嵌的驱动开始视频:原来他们的讲义就是这个模子的 幸好没有去报什么驱动开始班 其实自己这样看下来提高的不只是知识 还有以后学习的能力As you can imagine, device number registration is just the first of many tasks that driver code must carry out. We will soon look at other important driver components, but one other digression is needed first. Most of the fun. 阅读全文

posted @ 2013-02-07 17:26 michile 阅读(257) 评论(0) 推荐(0) 编辑

Major and Minor Numbers (主次设备号)--这个听说过

摘要: Char devices are accessed through names in the filesystem. Those names are called special files or device files or simply nodes of the filesystem tree; they are conventionally located in the /dev directory. Special files for char drivers are identified by a "c" in the first column of the o 阅读全文

posted @ 2013-02-07 17:10 michile 阅读(2238) 评论(0) 推荐(0) 编辑

scull device description

摘要: The scull source implements the following devices. Each kind of device implemented by the module is referred to as a type .scull0 to scull3Four devices, each consisting of a memory area that is both global and persistent. Global means that if the device is opened multiple times, the data contained w 阅读全文

posted @ 2013-02-07 16:40 michile 阅读(201) 评论(0) 推荐(0) 编辑

理解 Proc 文件系统

摘要: http://linux.chinaunix.net/doc/2004-10-05/16.shtml 阅读全文

posted @ 2013-02-07 16:24 michile 阅读(170) 评论(0) 推荐(0) 编辑

Doing It in User Space

摘要: 译文的标题叫在用户空间做:有点难以接受A Unix programmer who's addressing kernel issues for the first time might be nervous about writing a module. Writing a user program that reads and writes directly to the device ports may be easier.Indeed, there are some arguments in favor of user-space programming, and sometim 阅读全文

posted @ 2013-02-07 16:19 michile 阅读(240) 评论(0) 推荐(0) 编辑

Module Parameters

摘要: Several parameters that a driver needs to know can change from system to system. These can vary from the device number to use (as we'll see in the next chapter) to numerous aspects of how the driver should operate. For example, drivers for SCSI adapters often have options controlling the use of 阅读全文

posted @ 2013-02-07 15:59 michile 阅读(392) 评论(0) 推荐(0) 编辑

吐一下槽

摘要: 刚刚把advancing linux program 看完 ,马上又转到LDD3 上来,这大过年的,还在拼命地啃书,确实不容易啊!!实习这段时间感觉对自己的帮助还是很大,感谢PILI对我的帮助,公司的人都走得差不多了,我也是几天想回家都开始失眠了。今天就我们两个实习生在这里了,懒得折腾板子了,尽快把这本书看完吧。几天前就把LDD3的中文网页版下载了,昨天正式瞄了几眼,哎,这本书翻译得我确实不敢恭维啊,虽然个人英文水平很有限,但是译文中到处都是语法毛病,搞得我还得想着还原到英文环境中去理解,确实有点难受,既然这样还不如直接杀到英文版中实在理解有问题再回来看看译文,或许帮助更大一点!!分享下英文版 阅读全文

posted @ 2013-02-07 15:34 michile 阅读(165) 评论(0) 推荐(0) 编辑

Linux内核符号表【转】

摘要: 我们知道insmod使用公共内核符号表来解析模块中未定义的符号。公共内核符号表中包含了所有的全局内核项(即函数和变量)的地址,这是实现模块化驱动程序所必需的。当模块被装入内核后,它所导出的任何内核符号都会变成内核符号表的一部分。在通常情况下,模块只需实现自己的功能,而无需导出任何符号。但是,如果其他模块需要从某个模块中获得好处时,我们也可以导出符号。新模块可以使用由我们自己的模块导出的符号,这样,我们可以在其他模块上层叠新的模块。模块层叠技术也使用在很多主流的内核源代码中。例如msdos文件系统依赖于由fat模块导出的符号;而每个USB输入设备模块层叠在usbcore和input模块之上。Li 阅读全文

posted @ 2013-02-07 14:50 michile 阅读(1830) 评论(0) 推荐(0) 编辑

LDD3--模块编译

摘要: 模块的建立过程与用户空间的应用程序的建立过程有显著不同; 内核是一个大的, 独立的程序, 对于它的各个部分如何组合在一起有详细的明确的要求.建立过程也与以前版本的内核的过程不同; 新的建立系统用起来更简单并且产生更正确的结果, 但是它看起来与以前非常不同. 内核建立系统是一头负责的野兽, 我们就看它一小部分. 在内核源码的 Document/kbuild 目录下发现的文件, 任何想理解表面之下的真实情况的人都要阅读一下.有几个前提, 你必须在能建立内核模块前解决. 第一个是保证你有版本足够新的编译器, 模块工具, 以及其他必要工具. 在内核文档目录下的文件Documentation/Chang 阅读全文

posted @ 2013-02-07 14:41 michile 阅读(718) 评论(0) 推荐(0) 编辑

套接字编程

摘要: 套接字是一个双向通信设备,可用于同一台主机上不同进程之间的通信,也可用于沟通位于不同主机的进程。套接字是本章中介绍的所有进程间通信方法中唯一允许跨主机通信的方式。Internet 程序,如Te l n e t 、rlogin 、FTP 、talk 和万维网都是基于套接字的。 例如,你可以用一个Te l n e t 程序从一台网页服务器获取一个万维网网页,因为它们都使用套接字作为网络通信方式。可以通过执行telnet www.codesourcery.com 80 连接到位于www.codesourcery.com 主机的网页服务器。魔数80 指明了连接的目标进程是运行于www.codeso.. 阅读全文

posted @ 2013-02-07 11:33 michile 阅读(10562) 评论(0) 推荐(0) 编辑

管道编程

摘要: 管道是一个允许单向信息传递的通信设备。从管道“写入端”写入的数据可以从“读取端”读回。管道是一个串行设备;从管道中读取的数据总保持它们被写入时的顺序。一般来说,管道通常用于一个进程中两个线程之间的通信,或用于父子进程之间的通信。 在shell 中,| 符号用于创建一个管道。例如,下面的程序会使 shell 创建两个子进程,一个运行ls而一个运行less: % ls | less Shell同时还会创建一个管道,将运行 ls的子进程的标准输出连接到运行less 的子进程的标准输入。由ls输出的文件名将被按照与发送到终端时完全相同的顺序发送到less的标准输入。 管道的数据容量是有限的。如果写入. 阅读全文

posted @ 2013-02-07 11:03 michile 阅读(5400) 评论(1) 推荐(0) 编辑

映射内存

摘要: 映射内存提供了一种使多个进程通过一个共享文件进行通信的机制。尽管可以将映射内存想象为一个有名字的共享内存,你始终应当记住两者之间有技术层面的区别。映射内存既可以用于进程间通信,也可以作为一种访问文件内容的简单方法。 映射内存在一个文件和一块进程地址空间之间建立了联系。Linux 将文件分割成内存分页大小的块并复制到虚拟内存中,因此进程可以在自己的地址空间中直接访问文件内容。这样,进程就可以以读取普通内存空间的方法来访问文件的内容,也可以通过写入内存地址来修改文件的内容。这是一种方便的访问文件的方法。 你可以将映射内存想象成这样的操作:分配一个足够容纳整个文件内容的缓存,将全部文件内容读入缓存, 阅读全文

posted @ 2013-02-07 10:09 michile 阅读(1257) 评论(0) 推荐(0) 编辑