
驱动开发
文章平均质量分 53
buaa_shang
这个作者很懒,什么都没留下…
展开
-
驱动如何进行进程的状态改变和切换
//在驱动程序中改变进程的状态并调用schedule()static sszie_t xxx_write(struct file *filp, const char *buffer, size_t count, loff_t *ppos){ ... DECLARE_WAITQUEUE(wait, current); /* 定义等待队列 */ add_wait_queue(&xx原创 2013-03-28 22:45:33 · 1638 阅读 · 0 评论 -
使用信号实现异步通知机制的例子
include #include #include #include #include #include #define MAX_LEN 100//信号SIGIO的处理函数void input_handler(int num){ char data[MAX_LEN]; int len; /* 读取并输出STDIN_FILENO上的输入 */原创 2013-06-15 21:20:37 · 2388 阅读 · 0 评论 -
在驱动程序中改变进程状态并调用schedule()
理解Linux进程状态切换static ssize_t xxx_write(struct file *file, const char *buffer, size_t count, loff_t *ppos){ ... DECLARE_WAITQUEUE(wait, current); /* 定义等待队列,初始化一个名为name的等待队列 */ add_wait_原创 2013-06-15 12:30:19 · 1801 阅读 · 0 评论 -
设备驱动中异步通知编程
设备驱动中异步通知编程主要用到一项数据结构和两个函数。1.数据结构------fasync_struct结构体。2.两个函数 (1)处理FASYNC标志变更的int fasync_helper(int fd, struct file *filp, int mode, struct fasync_struct **fa); (2)释放信号用的函数void kill_f原创 2013-06-15 22:22:36 · 1447 阅读 · 0 评论 -
内核定时器编程
软件意义上的定时器最终以来硬件定时器来实现,内核在时钟中断发生后执行检测各定时器是否到期,到期后的定时器处理函数将作为软中断在底半部执行。实质上,时钟中断处理程序会唤起TIMER——SOFTIRQ软中断,运行当前处理器上到期的所有定时器。在LINUX驱动编程中,可以利用Linux内核中提供的一组函数和数据结构来完成定时触发工作或完成某周期性的事务。time_list结构体的一个实例对应一个原创 2013-06-16 13:48:26 · 1878 阅读 · 0 评论 -
Linux驱动开发-----内存存取
1.在用户空间动态申请内存的函数为malloc(),释放函数为free() 对Linux内核而言,C库的malloc()函数通过brk()和mmap()两个系统调用来实现2.内核空间内存动态申请---以页为单位(1).kmalloc()和__get_free_pages()申请的内存位于物理内存映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因此存在较简单原创 2013-06-16 23:27:20 · 1970 阅读 · 0 评论