#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
module_author("dreamice");
module_license("dual bsd/gpl");
#if 0
struct timer_data ;
struct timer_data test_data;
struct timer_data test_data1;
#endif
static void do_work(struct work_struct *work);
static void do_delayed_work(struct work_struct *work);
//static struct work_struct test_work;
///static delayed_work test_work1;
//static declare_delayed_work(test_work, do_work);
static declare_work(test_work, do_work);
static declare_delayed_work(test_work1, do_delayed_work);
#if 0
static struct workqueue_struct *test_workqueue;
atomic_t wq_run_times;
unsigned int failed_cnt = 0;
static int work_delay = 2 * hz; /* timer interval */
void test_timer_fn(unsigned long arg)
data->loops++;
printk("timer-0 loops: %u\n", data->loops);
}void test_timer_fn1(unsigned long arg)
data->loops++;
printk("timer-1 loops: %u\n", data->loops);
}#endif
static void do_work(struct work_struct *work)
//struct delayed_work *dwork
static void do_delayed_work(struct work_struct *dwork)
int wq_init(void)
void wq_exit(void)
module_init(wq_init);
module_exit(wq_exit);
1.使用定時器開啟工作佇列:01。create_singlethread_workqueue 建立自己的執行緒,02 queue_work(test_workqueue, &test_work 定時器函式中讓佇列工作。
2.工作結構掛接到核心預定義的事件工作佇列中排程
2.1 static declare_work(test_work, do_work);
static declare_delayed_work(test_work1, do_delayed_work);
使用靜態初始化。
2.2 // init_work(&test_work1, do_work);
//init_delayed_work(&test_work1, do_delayed_work);
使用動態初始化。
2.3schedule_delayed_work(&test_work1, hz * 2);
schedule_work(&test_work)
立即工作,延後工作。
globalfifo 驅動例項(工作佇列)
define globalfifo size 0x1000 全域性fifo最大4k位元組 define fifo clear 0x1 清0全域性記憶體的長度 define globalfifo major 200 預設的globalfifo的主裝置號 static int globalfifo ma...
工作佇列分析
一 用法 struct cpu workqueue struct cacheline aligned the externally visible workqueue abstraction is an array of per cpu workqueues struct workqueue str...
工作佇列模型
workqueue,中文稱其為工作佇列,是乙個用於建立核心執行緒的介面,通過它建立的核心執行緒來執行核心其他模組排列到佇列裡的工作,建立的核心執行緒被稱為工作者執行緒。要理解工作佇列的實現,重點在於理解相關的三個資料結構的含義及關係。1 表示工作佇列型別的資料結構 struct workqueue ...