linux tasklet函数,14.9.5 实例:Tasklet演示
14.9.5? 實(shí)例:Tasklet演示
本節(jié)的例子演示了Tasklet的使用方法。雖然Tasklet是Linux中斷處理的底半部的一種實(shí)現(xiàn)機(jī)制。但Tasklet并不一定要和中斷一起使用。即使沒有中斷,也可以在Linux驅(qū)動中使用Tasklet。本例在驅(qū)動程序的初始化函數(shù)中指定和調(diào)度Tasklet處理程序,并在驅(qū)動程序的退出函數(shù)中銷毀了Tasklet。
本節(jié)示例的源代碼路徑如下。
隨書光盤:/sources/ch14/tasklet.c
虛擬環(huán)境:/root/drivers/ch14/tasklet.c
在ch14目錄中有一個bh_eclipse目錄,該目錄是Eclipse工程目錄。讀者可以在Eclipse中導(dǎo)入該目錄,并可在該目錄中查看、編譯和安裝tasklet驅(qū)動,以及查看本章涉及的系統(tǒng)源代碼(如rtc-s3c.c、softirq.c、irqs.h、workqueue.c等)。
本例的源代碼如下:
#include
#include
#include
#include
#include
static?struct?tasklet_struct?my_tasklet;
//??tasklet處理函數(shù)
static?void?tasklet_handler?(unsigned?long?data)
{
printk(KERN_ALERT?"tasklet_handler?is?running.\n");
}
static?int?_init?demo_init(void)
{
//??初始化tasklet
tasklet_init(&my_tasklet,?tasklet_handler,?0);
//??調(diào)度tasklet處理程序
tasklet_schedule(&my_tasklet);
printk(KERN_ALERT?"demo_init.\n");
return?0;
}
static?void?_exit?demo_exit(void)
{
//??銷毀tasklet
tasklet_kill(&my_tasklet);
printk(KERN_ALERT?"demo_exit.\n");
}
MODULE_LICENSE("GPL");
module_init(demo_init);
module_exit(demo_exit);
執(zhí)行build.sh腳本文件編譯和安裝tasklet驅(qū)動。tasklet驅(qū)動安裝成功后,就會調(diào)度tasklet處理程序,使用dmesg命令可以參看tasklet驅(qū)動輸出的日志信息,如圖14-7所示。
【責(zé)任編輯:book TEL:(010)68476606】
點(diǎn)贊 0
總結(jié)
以上是生活随笔為你收集整理的linux tasklet函数,14.9.5 实例:Tasklet演示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux操作系统的体系架构,linux
- 下一篇: linux yum lamp环境,lin