博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
workqueue使用小结
阅读量:4216 次
发布时间:2019-05-26

本文共 913 字,大约阅读时间需要 3 分钟。

workqueue是一种中断的下半部机制,其可以提供一个进程上下文来推迟工作。主要有两种使用方法,一种是使用系统默认提供的workqueue,即system_wq其使用的方法如下:		if (remove) {			INIT_WORK(&entry->delete_netdev, delete_netdev);			schedule_work(&entry->delete_netdev);		}从schedule_work的源码可以看出是使用的system_wqstatic inline bool schedule_work(struct work_struct *work){	return queue_work(system_wq, work);}通过cancel_work_sync()来取消一个workqueue在int __init workqueue_init_early(void)中有申请system_wq和system_highpri_wq而每个cpu都有这两个workqueue,所以percpu定义如下:static DEFINE_PER_CPU_SHARED_ALIGNED(struct worker_pool [NR_STD_WORKER_POOLS], cpu_worker_pools);除了提供INIT_WORK外,其他使用system_wq的函数为INIT_DELAYED_WORK,INIT_DEFERRABLE_WORK第二种是自己通过alloc_workqueue()来自己创建一个workqueue.例如:创建一个自己的workqueue	iommu_wq = alloc_workqueue("amd_iommu_v2", WQ_MEM_RECLAIM, 0);	if (iommu_wq == NULL)		goto out;flush queue:	flush_workqueue(iommu_wq);运行这个queue		queue_work(iommu_wq, &fault->work);	销毁queue		destroy_workqueue(iommu_wq);

转载地址:http://lnnmi.baihongyu.com/

你可能感兴趣的文章
DB2快速创建测试库
查看>>
利用db2look查看ddl
查看>>
java中的mmap实现
查看>>
Redis的Aof被阻塞原因调查
查看>>
Redis Cluster的FailOver失败案例分析
查看>>
Android Alarm驱动源代码分析(Alarm.c)
查看>>
S3C2440上LCD驱动 (FrameBuffer)实例开发讲解
查看>>
Linux音频编程指南
查看>>
usb-otg-调试心得
查看>>
USB规范浏览--设备和主机规范
查看>>
男人的品位--我们自己的最求
查看>>
Android (Linux) Suspend流程
查看>>
LINUX时间管理
查看>>
定时器的使用
查看>>
为Android加入busybox工具
查看>>
使用技巧busybox
查看>>
如何查看与/dev/input目录下的event对应的设备
查看>>
bootloader-bootable解析
查看>>
bootloader (LK)&&android lk bootloader中相关修改指南
查看>>
SD卡驱动分析--基于高通平台
查看>>