【Linux内幕】schedule_work基本流程
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基本流程相关推荐
- Linux下服务器端开发流程及相关工具介绍(C++)
原文:Linux下服务器端开发流程及相关工具介绍(C++) 去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把 ...
- linux驱动程序是什么,简述一个Linux驱动程序的主要流程与功能
1. 简述一个Linux驱动程序的主要流程与功能. 2. 请列举一个软件中时间换空间或者空间换时间的例子. void swap(int a,int b) { int c; c=a;a=b;b=a; } ...
- Linux基本管理七大流程
Linux基本管理七大流程 环境:centos7.6系统,IP为192.168.11.11,具体操作环境依实际环境为准 1.通过rc.local脚本文件实现光盘的自动挂载,关闭selinux和防火墙功 ...
- Linux系统管理-开机启动流程
Linux系统管理-开机启动流程 文章目录 Linux系统管理-开机启动流程 CentoOS6的开机启动流程 CentOS6忘记root密码 Linux的关机指令 CentOS7的开机启动流程 Cen ...
- 第35课: 打通Spark系统运行内幕机制循环流程
第35课: 打通Spark系统运行内幕机制循环流程 Spark通过DAGScheduler面向整个Job划分出了不同的Stage,划分Stage之后,Stage从后往前划分,执行的时候从前往后执行,每 ...
- 嵌入式Linux系统环境搭建全流程-4412友善之臂开发板
4412友善之臂开发板-Linux系统环境搭建全流程 没错,这篇确实值得一看!可能是由于我稍微会一点点哈,就有好多小伙伴就找我帮他们搭建环境,但Linux中的以及开发版连接,与烧写程序中的整个环境 ...
- Linux 系统注册系统服务流程
Linux 系统注册系统服务流程 在/etc/systemd/system定义test.service文件(以定义启动nginx服务为例子) [Unit] Description=nginx serv ...
- 简单记录linux 宝塔建站流程
linux宝塔建站流程 官网非常详细 https://www.bt.cn/bbs/thread-19376-1-1.html 1.官网选择系统版本 2.有服务器的 远程连接系统 3.获取su权限 su ...
- 22081-12-12 系统移植(TF-A移植和linux操作系统开发阶段流程总结)
//移植流程 1.将uboot镜像文件固化到开发板的TF卡或者EMMC设备中 2.在ubuntu的~/tftpboot目录下,准备tftp服务器要下载的文件(镜像文件和设备树文件) 3.通过开发板的拨 ...
- Linux: 网络数据收发流程简析
文章目录 1. 前言 2. 背景 3. 网卡数据收发流程 3.1 网络数据接收流程 3.1.1 网卡数据接收流程 3.1.2 网卡数据向上传递给L3,L4的流程 3.2 网卡数据发送流程 1. 前言 ...
最新文章
- [导入]ASP.NET 2.0 读取配置文件[INI](示例代码下载)
- Java读取文件流用什么对象_使用Java IO流实现对文本文件的读写过程中,通常需要处理下列( )异常。_学小易找答案...
- boost::mpl模块实现unpack_args相关的测试程序
- python调用sdk的文章_如何使用 python 接入虹软 ArcFace SDK
- oracle分区表带入SQL语句,Oracle 分区表常用SQL语句 (转载)
- 【数理逻辑四】谓词逻辑及形式系统 【下】
- iOS开发笔记 2、Cocoa简明
- 2021-2025年中国超声波管道监测系统行业市场供需与战略研究报告
- completable java_java8 CompletableFuture异步编程
- linux解压缩6层
- JavaScript---BOM和DOM
- MySQL-Front设置中文
- c语言叠阵题目怎么做,选出下列词语书写全正确的一组[]A、贪婪点辍忍军不禁玲珑剔透B、辜负骚扰擎天旱地多姿多采C、小憩茁壮怡然自得头昏目眩D、玷污糟蹋蜂围叠阵明察秋豪...
- java char a z_java中,char A,char a的值各是多少?
- C语言程序设计卢萍,卢萍
- AI创业有风险,起步需谨慎!创业者从准备到失败~
- slurm学习笔记(一)
- java白盒测试代码_Java白盒测试
- 个人电脑创建mysql数据库
- java歌词解析器_Java swing实现音乐播放器桌面歌词字体变色效果|chu