執行緒工作佇列例項

2021-08-19 03:42:15 字數 2367 閱讀 1767

#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 ...