workqueue_struct和notify小记

本文介绍了Linux内核中的工作队列(workqueue_struct)和任务(work_struct)的使用,包括如何创建自定义工作队列、初始化任务及调度。同时,详细阐述了内核子系统间通信的Notify机制,它通过函数链表实现通知。工作流程包括定义通知链表头部,创建链表节点并注册到链表,以及通过notifier_call_chain触发回调函数。这种机制在O7_T中被应用,用于跨模块通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 工作队列(workqueue_struct)和任务(work_struct)
    简单记录一下;
    (1)先创建一个自己的工作队列,用一下宏

    (2)再初始化一个任务work_struct

    (3)把这个任务放到我们创建的工作队列里去调度
     之前就是定义一个work_struct 然后初始化后调schue_work ,应该就是放到系统自己本有的工作队列去运行;
  2. 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 里的函数链表节点里的函数;

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值