Linux驱动
文章平均质量分 78
y695385603
这个作者很懒,什么都没留下…
展开
-
struct file_operations
ssize_t (*read) (struct file *file, char __user * buf, size_t count, loff_t *pos); 功能:从内核空间读取数据到用户空间 参数: file: 存放open打开文件时生成的file指针原创 2013-12-21 13:12:15 · 1251 阅读 · 0 评论 -
中断处理(1)
一、中断处理的机制和注意事项 首先要注意:从本质上讲,中断处理程序和其它代码并发运行,这就会不可避免的引起一些并发问题。由于中断执行是异步的,而且是在非抢占式内核中打断当前运行内核代码的唯一方法,所以中断是可以和其它内核代码并发执行的。因此如果中断操作和被中断的内核代码访问同样的内核数据,就会发生竞争。Linux中的中断处理程序是不需要重入的。当一个给定的中断处理程序正在原创 2013-12-21 13:15:16 · 2028 阅读 · 0 评论 -
内核模块
一、模块程序结构: 1、模块许可声明 MODULE_LICENSE("GPL") 如果没有模块许可声明,加载内核时,会发出抱怨。另外,很多内核函数只有遵循了GPL许可协议才能被调用。另外还有Dual BSD许可等。 2、加载函数 缺省使用 int init_module(void)原创 2013-12-21 13:06:32 · 1012 阅读 · 0 评论 -
阻塞型IO(等待队列)
如何在驱动程序中实现一个阻塞型IO,等待队列就是最常用的方法。 对于一个阻塞操作来说,我们的驱动程序应该阻塞该进程,将其置入休眠状态直到请求可继续。一、休眠的简单介绍 当一个进程被置为睡眠,它被标识为处于一个特殊的状态并且从调度器的运行队列中去除。直到发生某些情况下改变了这个状态, 进程将才会在任意 CPU 上调度,,即运行该进程。 休眠中的进程原创 2013-12-21 13:10:09 · 2039 阅读 · 0 评论 -
字符设备常用函数
一、数据拷贝#includestatic unsigned long copy_to_user(void __user *to, const void *from, unsigned long n) 功能:从内核空间拷贝数据到用户空间 参数: to: 要复制到用户空间的地址原创 2013-12-21 13:10:47 · 939 阅读 · 0 评论 -
字符设备驱动
一、设备分类按设备访问方式(特点):1、字符设备:鼠标,键盘,串口,帧缓存 特点:以字节为单位访问,通常只支持顺序访问,无缓冲存2、块设备:磁盘,光驱,flash 特点:以固定大小为单位访问,支持随机访问,有缓存,不直接和VFS交互3、网络设备: 特点:无设备节点,通过套接字访问设备设备号原创 2013-12-21 13:09:09 · 946 阅读 · 0 评论