LDD3阅读笔记
Huke_abc
倾听自己内心的声音,执着于自己的梦想,一步一步往上爬.....
展开
-
第一章 设备驱动程序简介
Linux自由操作系统,其内部实现细节对于所有人来说都是公开的。虽然它的内核由大量的而且复杂的代码组成,但是想成为内核黑客的人还是可以找到一个入口,通过这个入口进入Linux内核的开发当中,进入linux自由王国,而这个入口就是设备驱动程序。 驱动程序在 Linux 内核里扮演着特殊的角色. 它们是截然不同的"黑盒子", 使硬件的特殊的一部分响应定义好的内部编程接口. 它们完全隐藏原创 2011-11-12 22:44:38 · 491 阅读 · 0 评论 -
Linux 设备驱动学习之 异步通知
From:http://blog.csdn.net/ypoflyer/article/details/6131334 异步通知: 使用poll轮询方式的时候,相当于应用程序在需要的时候询问设备“准备好了吗?”,如果有这样一种情况,一个进程在低优先级正在执行长的循环计算,但又需要“尽可能快”的处理输入数据,如果采用poll的方式,那么需要这个应用程序周期性的调用poll来检测数据,也转载 2012-06-16 13:06:31 · 640 阅读 · 0 评论 -
linux驱动学习之 同步/异步 阻塞/非阻塞
from: http://www.cppblog.com/converse/archive/2009/05/13/82879.html 我喜欢用自己的语言通过联系现实生活中的一些现象解释一些概念,当我能做到这一点时,说明我已经理解了这个概念.今天要解释的概念是:同步/异步与阻塞/非阻塞的区别.这两组概念常常让人迷惑,因为它们都是涉及到IO处理,同时又有着一些相类似的地方.首转载 2012-06-17 10:41:42 · 1068 阅读 · 1 评论 -
char device driver
// 三个最重要的数据结构。struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); ssize_t (*write)原创 2012-06-15 14:13:20 · 548 阅读 · 0 评论 -
Linux设备驱动程序学习(4)-高级字符驱动程序操作[(1)ioctl and llseek]
今天进入《Linux设备驱动程序(第3版)》第六章高级字符驱动程序操作的学习。一、ioctl大部分设备除了读写能力,还可进行超出简单的数据传输之外的操作,所以设备驱动也必须具备进行各种硬件控制操作的能力. 这些操作常常通过 ioctl 方法来支持,它有和用户空间版本不同的原型:int(*ioctl)(struct inode*inode,st转载 2012-06-15 09:31:39 · 834 阅读 · 0 评论 -
Linux设备驱动程序学习(3)-并发和竞态
今天进入《Linux设备驱动程序(第3版)》第五章并发和竞态的学习。对并发的管理是操作系统编程中核心的问题之一。 并发产生竞态,竞态导致共享数据的非法访问。因为竞态是一种极端低可能性的事件,因此程序员往往会忽视竞态。但是在计算机世界中,百万分之一的事件可能没几秒就会发生,而其结果是灾难性的。一、并发及其管理竞态通常是作为对资源的共享访问结果而产生的。在设计自己的驱动程序转载 2012-06-15 09:18:40 · 740 阅读 · 0 评论 -
第二章 构造和运行模块(1)
第二章开始进入到实际的编程了。第一个测试代码:Hello World。第一件事就是建立测试系统。我安装的系统是rhel-5.1-server-i386-dvd.iso,你可以到网上下载其他版本。里面自带的内核版本是2.6.18-53.e15。我觉得不爽,在kernerl.org镜像网站上下了linux-2.6.29.tar.bz2安装包,准备安装自己的内核。(1)将其解压到/home目原创 2011-11-13 21:16:41 · 554 阅读 · 0 评论 -
LDD3源码主目录下的Rules.make文件分析
把一些宏定义都替换了,成了如下文件,有些地方还不是很明白,以后补充。==================================================================================================TOPDIR = .KERNELDIR = /usr/src/linuxINCLUDEDIR = /usr/src/li原创 2012-06-14 13:55:12 · 1010 阅读 · 0 评论 -
Linux设备驱动程序学习(1)-字符设备驱动程序
今天进入《Linux设备驱动程序(第3版)》第三章字符设备驱动程序的学习。这一章主要通过介绍字符设备scull(Simple Character Utility for Loading Localities,区域装载的简单字符工具)的驱动程序编写,来学习Linux设备驱动的基本知识。scull可以为真正的设备驱动程序提供样板。一、主设备号和次设备号主设备号表示设备对应的驱动程序转载 2012-06-14 15:47:17 · 509 阅读 · 0 评论 -
Linux设备驱动程序学习(0)-Hello, world!模块
一个学习Linux设备驱动程序都会碰到的第一个例程:#includelinux/init.h>#includelinux/module.h>MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT "Hello, Tekka转载 2012-06-14 15:08:30 · 613 阅读 · 0 评论 -
linux sed命令参数及用法详解
sed编辑器是 Linux 系统管理员的工具包中最有用的资产之一,因此,有必要彻底地了解其应用Linux 操作系统最大的一个好处是它带有各种各样的实用工具。存在如此之多不同的实用工具,几乎不可能知道并了解所有这些工具。可以简化关键情况下操作的一个实用 工具是 sed。它是任何管理员的工具包中最强大的工具之一,并且可以证明它自己在关键情况下非常有价值。sed 实用工具是一个“转载 2012-06-14 13:47:27 · 616 阅读 · 0 评论 -
Makefile之wildcard
Makefile之wildcard 1、wildcard : 扩展通配符2、notdir : 去除路径3、patsubst :替换通配符例子:建立一个测试目录,在测试目录下建立一个名为sub的子目录$ mkdir test$ cd test$ mkdir sub在test下,建立a.c和b.c2个文件,在sub目录下,建立sa.c和sb.c2 个文件建转载 2012-06-14 13:09:26 · 461 阅读 · 0 评论 -
0 - 构造和运行模块
作者:蔡伦辉写在前面作者一直支持GPL的精神。允许任何人自由使用、转载、复制和再分发,但必须保留作者署名,必须保证全文完整转载,包括完整的版权声明。由于作者水平有限,因此不能保证文章内容准确无误,请批判阅读。如果你发现任何错误或对文章内容有任何建议,欢迎你与我联系:Email: [email protected] QQ群: 14765968转载 2012-06-14 10:43:13 · 781 阅读 · 0 评论 -
make -C M=
一般用下面的Makefile : # Makefile2.6 ifneq ($(KERNELRELEASE),)obj-m := hello.o else PWD := $(shell pwd) # 指定模块源代码目录KVER ?= $(shell uname -r)原创 2012-06-07 11:12:09 · 699 阅读 · 0 评论 -
Linux设备驱动学习之 Poll机制分析
int poll(struct pollfd *fds,nfds_t nfds, int timeout); 总的来说,Poll机制会判断fds中的文件是否可读,如果可读则会立即返回(程序从休眠态变为运行态,可以再次参与调度),返回的值就是可读fd的数量,如果不可读,那么该进程就会休眠timeout这么长的时间,然后再来判断是否有文件可读,如果有,返回fd的数量,如果没有,则返回.转载 2012-06-15 21:32:33 · 874 阅读 · 0 评论