1、前言

在许多情况下,设备驱动程序不需要有自己的工作队列。如果我们只是偶尔需要向队列中提交任务,则一种更简单、更有效的办法是使用内核提供的共享的默认工作队列。但是,如果我们使用了这个默认的工作队列,则应该记住我们正在和他人共享该工作队列。这意味着,我们不应该长期独占该队列,即:不能长时间休眠,而且我们的任务可能需要更长的时间才能获得处理器。

2、schedule_work使用步骤:

1、定义相关数据
static struct work_struct jiq_work;
2、编写要提交到工作队列中的函数
static_void jiq_print_wq(struct work_struct *work)
{

}
3、完成数据的初始化工作
INIT_WORK(&jiq_work, jiq_print_wq);
4、将任务提交到工作队列
schedule_work(&jiq_work);

3、示例

        #include <linux/module.h>#include <linux/init.h>#include <linux/workqueue.h>static struct workqueue_struct *wq = NULL;static struct work_struct work;static void work_handler(struct work_struct *data){printk(KERN_ALERT"work handler function");}static int __init test_init(void){wq = create_singlethread_workqueue("my_workqueue");if(!wq)goto err;INIT_WORK(&work, work_handler);queue_work(&work);return 0;err:return -1;}static void __exit test_exit(void){destroy_workqueue(wq);}MODULE_LICENSE("GPL");module_init(test_init);module_exit(rest_exit);schedule_work(&jiq_work);

4、加入讨论

【Linux内幕】schedule_work基本流程相关推荐

  1. Linux下服务器端开发流程及相关工具介绍(C++)

    原文:Linux下服务器端开发流程及相关工具介绍(C++) 去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把 ...

  2. linux驱动程序是什么,简述一个Linux驱动程序的主要流程与功能

    1. 简述一个Linux驱动程序的主要流程与功能. 2. 请列举一个软件中时间换空间或者空间换时间的例子. void swap(int a,int b) { int c; c=a;a=b;b=a; } ...

  3. Linux基本管理七大流程

    Linux基本管理七大流程 环境:centos7.6系统,IP为192.168.11.11,具体操作环境依实际环境为准 1.通过rc.local脚本文件实现光盘的自动挂载,关闭selinux和防火墙功 ...

  4. Linux系统管理-开机启动流程

    Linux系统管理-开机启动流程 文章目录 Linux系统管理-开机启动流程 CentoOS6的开机启动流程 CentOS6忘记root密码 Linux的关机指令 CentOS7的开机启动流程 Cen ...

  5. 第35课: 打通Spark系统运行内幕机制循环流程

    第35课: 打通Spark系统运行内幕机制循环流程 Spark通过DAGScheduler面向整个Job划分出了不同的Stage,划分Stage之后,Stage从后往前划分,执行的时候从前往后执行,每 ...

  6. 嵌入式Linux系统环境搭建全流程-4412友善之臂开发板

    4412友善之臂开发板-Linux系统环境搭建全流程 ​ 没错,这篇确实值得一看!可能是由于我稍微会一点点哈,就有好多小伙伴就找我帮他们搭建环境,但Linux中的以及开发版连接,与烧写程序中的整个环境 ...

  7. Linux 系统注册系统服务流程

    Linux 系统注册系统服务流程 在/etc/systemd/system定义test.service文件(以定义启动nginx服务为例子) [Unit] Description=nginx serv ...

  8. 简单记录linux 宝塔建站流程

    linux宝塔建站流程 官网非常详细 https://www.bt.cn/bbs/thread-19376-1-1.html 1.官网选择系统版本 2.有服务器的 远程连接系统 3.获取su权限 su ...

  9. 22081-12-12 系统移植(TF-A移植和linux操作系统开发阶段流程总结)

    //移植流程 1.将uboot镜像文件固化到开发板的TF卡或者EMMC设备中 2.在ubuntu的~/tftpboot目录下,准备tftp服务器要下载的文件(镜像文件和设备树文件) 3.通过开发板的拨 ...

  10. Linux: 网络数据收发流程简析

    文章目录 1. 前言 2. 背景 3. 网卡数据收发流程 3.1 网络数据接收流程 3.1.1 网卡数据接收流程 3.1.2 网卡数据向上传递给L3,L4的流程 3.2 网卡数据发送流程 1. 前言 ...

最新文章

  1. [导入]ASP.NET 2.0 读取配置文件[INI](示例代码下载)
  2. Java读取文件流用什么对象_使用Java IO流实现对文本文件的读写过程中,通常需要处理下列( )异常。_学小易找答案...
  3. boost::mpl模块实现unpack_args相关的测试程序
  4. python调用sdk的文章_如何使用 python 接入虹软 ArcFace SDK
  5. oracle分区表带入SQL语句,Oracle 分区表常用SQL语句 (转载)
  6. 【数理逻辑四】谓词逻辑及形式系统 【下】
  7. iOS开发笔记 2、Cocoa简明
  8. 2021-2025年中国超声波管道监测系统行业市场供需与战略研究报告
  9. completable java_java8 CompletableFuture异步编程
  10. linux解压缩6层
  11. JavaScript---BOM和DOM
  12. MySQL-Front设置中文
  13. c语言叠阵题目怎么做,选出下列词语书写全正确的一组[]A、贪婪点辍忍军不禁玲珑剔透B、辜负骚扰擎天旱地多姿多采C、小憩茁壮怡然自得头昏目眩D、玷污糟蹋蜂围叠阵明察秋豪...
  14. java char a z_java中,char A,char a的值各是多少?
  15. C语言程序设计卢萍,卢萍
  16. AI创业有风险,起步需谨慎!创业者从准备到失败~
  17. slurm学习笔记(一)
  18. java白盒测试代码_Java白盒测试
  19. 个人电脑创建mysql数据库
  20. java歌词解析器_Java swing实现音乐播放器桌面歌词字体变色效果|chu

热门文章

  1. 【爬虫初探】新浪微博搜索爬虫总览
  2. 可调式直流电源需要注意哪些以防止损坏?
  3. 一个人的旅行(最短路)
  4. 2008年总结 & 2009年展望
  5. 【CF#189】 A - Cut Ribbon(完全背包|暴力)*
  6. CSDN 真是不安全的网站啊。。。从此之后再不用csdn博客了
  7. 基于C++的餐厅管理程序的设计与实现
  8. GBASE亮相联通云巡展(四川站) 以专业赋能云生态
  9. 在ROS中兼容Python3和Python2
  10. 2020-2021学年第二学期期末考试《国际结算》大作业