随笔分类 - 国嵌视频
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 11 struct mylist_random { 12...
阅读全文
摘要:linux 2.6.13 开始,devfs不存在,udev取代devfs.udev(mdev)存在应用层,可以实现设备文件的自动创建和删除。过程:驱动代码调用class_create创建一个class,再为每个设备调用class_create创建对应的设备。※ 自动创建设备文件需要udev的支持st...
阅读全文
摘要:Poll 与系统select调用相对应 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)Poll设备方法完成流程...
阅读全文
摘要:为什么阻塞?在阻塞方式下,写没有足够的空间或读时候没有数据。※ 阻塞方式是文件读写的默认方式。没有空间或者读时没有数据返回错误。※残留问题:驱动程序中全局变量 在不同进程间是共享的吗?阻塞型设备驱动程序 驱动代码: 1 #ifndef _MEMDEV_H_ 2 #define _MEMDEV_H_...
阅读全文
摘要:定义和初期化定义等待队列wait_queue_head_t myqueue;初始化等待队列init_waitqueue_head(&myqueue)定义并初始化等待队列DECLARE_WAIT_QUEUE_HEAD(myqueue)睡眠条件睡眠当condition为真时,立即执行;wait_even...
阅读全文
摘要:驱动内容: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 1...
阅读全文
摘要:ioctl控制设备除了读写设备之外,其他功能的实现需要ioctl。如串口的波特率的设定。用户空间:ioctl的应用apiint ioctl(int fd, unsigned long cmd, ...)fd 文件描述符cmd 发送的命令...依赖cmd命令内核空间api int (*ioctl)(...
阅读全文
摘要:并发与竞态处理并发的机制(信号量和自旋锁)信号量1.定义信号量#include struct semaphore sem;2.初始化信号量void sema_init(struct semaphore *sem, int val)val 为非正数 表明有任务等待信号量3.锁int down_inte...
阅读全文
摘要:调试技术打印调试(log)调试器(kgdb)查询调试(proc文件查询)打印调试(log)文件追加PLOG()打印Log#ifdef PDEBUG#define PLOG(fmt,args..) printk(KERNEL_DEBUG"scull:"fmt"",##args)#else#defi...
阅读全文
浙公网安备 33010602011771号