1951a39d68df598db08dfced8b4707755864a0492Ying Wang/**************************************************************************** 2951a39d68df598db08dfced8b4707755864a0492Ying Wang **************************************************************************** 3951a39d68df598db08dfced8b4707755864a0492Ying Wang *** 4951a39d68df598db08dfced8b4707755864a0492Ying Wang *** This header was automatically generated from a Linux kernel header 5951a39d68df598db08dfced8b4707755864a0492Ying Wang *** of the same name, to make information necessary for userspace to 6951a39d68df598db08dfced8b4707755864a0492Ying Wang *** call into the kernel available to libc. It contains only constants, 7951a39d68df598db08dfced8b4707755864a0492Ying Wang *** structures, and macros generated from the original header, and thus, 8951a39d68df598db08dfced8b4707755864a0492Ying Wang *** contains no copyrightable information. 9951a39d68df598db08dfced8b4707755864a0492Ying Wang *** 10951a39d68df598db08dfced8b4707755864a0492Ying Wang **************************************************************************** 11951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************/ 12951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _LINUX_WORKQUEUE_H 13951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _LINUX_WORKQUEUE_H 14951a39d68df598db08dfced8b4707755864a0492Ying Wang 15951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/timer.h> 16951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/linkage.h> 17951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/bitops.h> 18951a39d68df598db08dfced8b4707755864a0492Ying Wang 19951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct workqueue_struct; 20951a39d68df598db08dfced8b4707755864a0492Ying Wang 21951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct work_struct { 22951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned long pending; 23951a39d68df598db08dfced8b4707755864a0492Ying Wang struct list_head entry; 24951a39d68df598db08dfced8b4707755864a0492Ying Wang void (*func)(void *); 25951a39d68df598db08dfced8b4707755864a0492Ying Wang void *data; 26951a39d68df598db08dfced8b4707755864a0492Ying Wang void *wq_data; 27951a39d68df598db08dfced8b4707755864a0492Ying Wang struct timer_list timer; 28951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 29951a39d68df598db08dfced8b4707755864a0492Ying Wang 30951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct execute_work { 31951a39d68df598db08dfced8b4707755864a0492Ying Wang struct work_struct work; 32951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 33951a39d68df598db08dfced8b4707755864a0492Ying Wang 34951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __WORK_INITIALIZER(n, f, d) { .entry = { &(n).entry, &(n).entry }, .func = (f), .data = (d), .timer = TIMER_INITIALIZER(NULL, 0, 0), } 35951a39d68df598db08dfced8b4707755864a0492Ying Wang 36951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DECLARE_WORK(n, f, d) struct work_struct n = __WORK_INITIALIZER(n, f, d) 37951a39d68df598db08dfced8b4707755864a0492Ying Wang 38951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PREPARE_WORK(_work, _func, _data) do { (_work)->func = _func; (_work)->data = _data; } while (0) 39951a39d68df598db08dfced8b4707755864a0492Ying Wang 40951a39d68df598db08dfced8b4707755864a0492Ying Wang#define INIT_WORK(_work, _func, _data) do { INIT_LIST_HEAD(&(_work)->entry); (_work)->pending = 0; PREPARE_WORK((_work), (_func), (_data)); init_timer(&(_work)->timer); } while (0) 41951a39d68df598db08dfced8b4707755864a0492Ying Wang 42951a39d68df598db08dfced8b4707755864a0492Ying Wang#define create_workqueue(name) __create_workqueue((name), 0) 43951a39d68df598db08dfced8b4707755864a0492Ying Wang#define create_singlethread_workqueue(name) __create_workqueue((name), 1) 44951a39d68df598db08dfced8b4707755864a0492Ying Wang 45951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 46