专栏首页Linux驱动45.INIT_WORK()工作队列使用

45.INIT_WORK()工作队列使用

介绍

在中断处理中,经常用到工作队列,这样便能缩短中断处理时的时间

中断中通过调用schedule_work(work)来通知内核线程,然后中断结束后,再去继续执行work对应的func函数

示例

当中断来了,立马调用schedule_work(work),然后退出.

中断结束后,内核便会调用_work对应的func函数,最后才来读取按键值,上报按键值,这样就大大缩短了中断处理时间

常用函数

1.

INIT_WORK(work, func);

其中参数1是个work_struct结构体,参数2是个函数名,通过INIT_WORK将work_struct与一个函数建立起来.

其中work_struct结构体定义如下所示:

struct work_struct {
         atomic_long_t data;                       
         struct list_head entry;                     
         work_func_t func;                            //函数指针,指向func函数
#ifdef CONFIG_LOCKDEP
         struct lockdep_map lockdep_map;
#endif
};

2.

schedule_work(work);

通知内核线程,在后续的时间里,系统将会自动调用work结构体对应的func函数

 3.

bool cancel_work_sync(struct work_struct *work);

取消work结构体对应的func函数,一般在exit中使用

接下来,在下一章,将会在中断里用到它们: https://www.cnblogs.com/lifexy/p/9629699.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 16.XML语法、CDATA、约束(DTD、Schema)讲解

    xml主要用来描述数据,比如配置文件,网络之间传输数据等,并且在android中也经常用xml来布局,,接下来便来学习xml常用的东西

    张诺谦
  • 36.Linux驱动调试-根据oops定位错误代码行

    1.当驱动有误时,比如,访问的内存地址是非法的,便会打印一大串的oops出来 1.1以LED驱动为例 将open()函数里的ioremap()屏蔽掉,直接使用物...

    张诺谦
  • 37.Linux驱动调试-根据oops的栈信息,确定函数调用过程

    在上章里,我们分析了oops的PC值在哪个函数出错的 本章便通过栈信息来分析函数调用过程 1.上章的oops栈信息如下图所示: ? 9fe0: 代表最初的栈顶S...

    张诺谦
  • zephyr 工作队列(work queue)

    zephyr中工作队列是基于线程的,简单来说,就是有一个线程一直在等待工作队列的api发来的工作项,当有工作项时(一个待 执行的函数)就处理(把函数调用了),当...

    无限之生
  • C语言链表应用--基于Linux C多线程软件框架实现

    https://blog.csdn.net/morixinguan/article/details/77986553

    morixinguan
  • 《机器学习》笔记-降维与度量学习(10)

    如今机器学习和深度学习如此火热,相信很多像我一样的普通程序猿或者还在大学校园中的同学,一定也想参与其中。不管是出于好奇,还是自身充电,跟上潮流,我觉得都值得试一...

    机器学习算法工程师
  • 春节充电系列:李宏毅2017机器学习课程学习笔记06之深度学习入门

    【导读】我们在上一节的内容中已经为大家介绍了台大李宏毅老师的机器学习课程的logistic regression,这一节将主要针对深度学习入门知识进行讨论。本文...

    WZEARW
  • 机器学习到底能创造什么价值?我们精选了9位从业者的答案

    来源 | HackerNews 编译 | 晓查 不温不火的机器学习忽然蹿红业界,也就是这两三年的事,于是不仅传统行业,连风光一时的互联网公司也开始疑惑:我们要不...

    AI科技大本营
  • 原生JS | 随机抽取不重复的数组元素 —— 有没有更好的方法?

    HTML5学堂-码匠:从数组中随机抽取不重复的元素,构成新数组,拥有多种方法,来看看你用的方法性能如何? 效果的功能需求 从一个数组当中,随机抽取数个元素,构成...

    HTML5学堂
  • 手工搭建简易的Linux恶意脚本分析系统

    Linux环境下的恶意软件大部分以shell脚本作为母体文件进行传播,而且,同一个病毒家族所使用的的恶意脚本往往具有极高相似性,新变种的脚本大部分是在旧变种脚本...

    FB客服

扫码关注云+社区

领取腾讯云代金券