2010年10月20日

linux驱动的mmap操作

摘要: 【转】一、自己画了个图,不知正确? 这是我的理解注意 1.所有的物理内存要使用都要映射到内核空间2.物理内存划分为页3.页扩展机制,支持大于4G的物理内存,这时要用到三级分页(pgd 页全局目录Page Global Directory,pmd页中间目录 (Page Middle Directory),pte页表条目 (Page Table Entry)),不需支持时,只需将 pmd 定义成&ld... 阅读全文

posted @ 2010-10-20 16:10 呵呵,呵呵 阅读(3251) 评论(0) 推荐(0) 编辑

阻塞与非阻塞I/O

摘要: 阻塞与非阻塞I/O 【转】阻塞操作是指在执行设备操作时若不能获得资源则挂起进程,直到满足可操作的条件后再进行操作。 因为阻塞的进程会进入休眠状态,因此,必须确保有一个地方能够唤醒休眠的进程。唤醒进程的地方最大可能发生在中断里面,因为硬件资源获得的同时往往伴随着一个中断。 注意:驱动程序需要提供阻塞(等待队列,中断)和非阻塞方式(轮询,异步通知)访问设备。 休眠(被阻塞)的进程处于一个特殊的不可执行... 阅读全文

posted @ 2010-10-20 15:42 呵呵,呵呵 阅读(5351) 评论(0) 推荐(0) 编辑

Poll方法

摘要: Poll方法解析【转】当应用程序需要进行对多文件读写时,常用到 poll(System V)、select(BSD Unix)、 epoll(linux2.5.45开始)(没验证)系统调用配合使用。当poll函数返回时,会给出一个文件是否可读写的标志,应用程序根据不同的标志读写相应的文件,实现阻塞或非阻塞的读写。这些系统调用功能相同: 允许进程来决定它是否可阻塞或非阻塞的读写一个或多个文件。这些调... 阅读全文

posted @ 2010-10-20 15:33 呵呵,呵呵 阅读(1934) 评论(0) 推荐(0) 编辑

LINUX内核-等待队列

摘要: LINUX内核-等待队列【转】一、定义:/include/linux/wait.hstruct __wait_queue_head { spinlock_t lock; struct list_head task_list; }; typedef struct __wait_queue_head wait_queue_head_t;二、作用:在内核里面,等待队列是有很多用处的,尤其是在中断处理、进... 阅读全文

posted @ 2010-10-20 14:32 呵呵,呵呵 阅读(628) 评论(0) 推荐(0) 编辑

设备控制接口(ioctl 函数)

摘要: 【转】Linux设备控制接口序言设备驱动程序的一个基本功能就是管理和控制设备,同时为用户应用程序提供管理和控制设备的接口。我们前面的“Hello World”驱动程序已经可以提供读写功能了,在这里我们将扩展我们的驱动以支持设备控制接口,在Linux中这个接口是通过ioctl函数来实现的。设备控制接口(ioctl 函数)回想一下我们在字符设备驱动中介绍的struct file... 阅读全文

posted @ 2010-10-20 13:43 呵呵,呵呵 阅读(29803) 评论(0) 推荐(3) 编辑

Linux设备驱动并发控制

摘要: 【转】深入浅出Linux设备驱动并发控制介绍 (2007-05-28 22:32)  在驱动程序中,当多个线程同时访问相同的资源时(驱动程序中的全局变量是一种典型的共享资源),可能会引发'竞态',因此我们必须对共享资源进行并发控制。Linux内核中解决并发控制的最常用方法是自旋锁与信号量(绝大多数时候作为互斥锁使用)。  自旋锁与信号量'类似而不类',类似说的是它们功能上的相似性,'不类'指代它们... 阅读全文

posted @ 2010-10-20 13:17 呵呵,呵呵 阅读(843) 评论(0) 推荐(0) 编辑

字符设备驱动程序细节

摘要: Linux设备驱动程序之读书笔记(一)2009-10-13 15:56【转】Linux设备驱动程序之读书笔记(一) ——第三章字符设备驱动程序○、说明笔记适用于Linux的2.6.10以后的内核。笔记以Linux Device Driver3提供的scull程序(scull目录中的main.c和scull.h)为记录主线,并以该驱动程序中的各种系统调用和函数调用流程为记录顺... 阅读全文

posted @ 2010-10-20 10:48 呵呵,呵呵 阅读(769) 评论(0) 推荐(0) 编辑

用户空间的open,read,write,llseek等函数在内核中对应的函数

摘要: 【转】发表于 2009-12-12 14:42 | 只看该作者平时网络部分的东西碰的多些,这块一开始还真不知道怎么写,因为肯定和在用户空间下是不同的。google过后,得到以下答案。一般可以用两种方法:第一种是用系统调用。第二种方法是filp->open()等函数。下面分别来说下这两种方法。1 利用系统调用:sys_open,sys_write,sys_read等。其实分析过sys_open... 阅读全文

posted @ 2010-10-20 10:46 呵呵,呵呵 阅读(6710) 评论(0) 推荐(0) 编辑

module_param宏

摘要: 关于module_param()宏 (转) 在用户态下编程可以通过main()的来传递命令行参数,而编写一个内核模块则通过module_param() module_param宏是Linux 2.6内核中新增的,该宏被定义在include/linux/moduleparam.h文件中,具体定义如下:#define module_param(name, type, perm) module_para... 阅读全文

posted @ 2010-10-20 10:30 呵呵,呵呵 阅读(898) 评论(0) 推荐(0) 编辑

阳光明媚,开始了,我的奋斗

摘要: 今天有几个朋友的话,确实说的不错。转发并求证一下~@-经典语录-:98年,马化腾凑了50万创办腾讯,没买房; 98年,史玉柱向朋友借了50万搞脑白金,没买房; 99年,丁磊用50万创办163,没买房; 99年,陈天桥50万创办盛大,没买房; 99年,马云凑了50万,注册阿里巴巴,没买房...... 如果当年他们用50万买了房,现在可能贷款都没还完这个连街头的小偷都不敢呵斥的民族,却有勇气高呼灭了小... 阅读全文

posted @ 2010-10-20 09:24 呵呵,呵呵 阅读(279) 评论(0) 推荐(0) 编辑

导航