1c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner/**************************************************************************** 2c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner **************************************************************************** 3c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *** 4c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *** This header was automatically generated from a Linux kernel header 5c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *** of the same name, to make information necessary for userspace to 6c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *** call into the kernel available to libc. It contains only constants, 7c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *** structures, and macros generated from the original header, and thus, 8c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *** contains no copyrightable information. 9c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *** 10c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner **************************************************************************** 11c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ****************************************************************************/ 12c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#ifndef _LINUX_WORKQUEUE_H 13c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define _LINUX_WORKQUEUE_H 14c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner 15c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/timer.h> 16c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/linkage.h> 17c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/bitops.h> 18c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner 19c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerstruct workqueue_struct; 20c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner 21c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerstruct work_struct { 22c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner unsigned long pending; 23c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct list_head entry; 24c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner void (*func)(void *); 25c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner void *data; 26c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner void *wq_data; 27c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct timer_list timer; 28c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner}; 29c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner 30c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerstruct execute_work { 31c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct work_struct work; 32c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner}; 33c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner 34c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define __WORK_INITIALIZER(n, f, d) { .entry = { &(n).entry, &(n).entry }, .func = (f), .data = (d), .timer = TIMER_INITIALIZER(NULL, 0, 0), } 35c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner 36c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define DECLARE_WORK(n, f, d) struct work_struct n = __WORK_INITIALIZER(n, f, d) 37c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner 38c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define PREPARE_WORK(_work, _func, _data) do { (_work)->func = _func; (_work)->data = _data; } while (0) 39c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner 40c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#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) 41c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner 42c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define create_workqueue(name) __create_workqueue((name), 0) 43c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define create_singlethread_workqueue(name) __create_workqueue((name), 1) 44c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner 45c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#endif 46