- 工作队列(workqueue_struct)和任务(work_struct)
简单记录一下;
(1)先创建一个自己的工作队列,用一下宏
(2)再初始化一个任务work_struct
(3)把这个任务放到我们创建的工作队列里去调度
之前就是定义一个work_struct 然后初始化后调schue_work ,应该就是放到系统自己本有的工作队列去运行; - Notify机制
用于内核子系统之间进行通信,其实就是个函数的链表,主要涉及两个数据结构;
用法:
(1)一个.c 里面定义好一个链表头部 blocking_notifier_head,然后写好自己的链表节点注册、注销函数,一般都是包装一下内核的API,然后导出为符号给别的.c 使用;
(2)别的.c 里面就定义好链表节点struct notifier_block ,初始化好里面的回调函数,然后再用(1)里面的回调挂到链表上;
(3)当有事情发生,就用notifier_call_chain来向某个通知链表发信息,就会跑链表节点的函数了;
这个函数的调用地方有待分析,O7_T里是在创建函数表头的.c 里去写了个包装notifier_call_chain 的函数,然后在这个.c 里用,从而触发另外一个.c 里的函数链表节点里的函数;