16ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/**************************************************************************** 26ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh **************************************************************************** 36ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *** 46ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *** This header was automatically generated from a Linux kernel header 56ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *** of the same name, to make information necessary for userspace to 66ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *** call into the kernel available to libc. It contains only constants, 76ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *** structures, and macros generated from the original header, and thus, 86ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *** contains no copyrightable information. 96ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *** 106ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh **************************************************************************** 116ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ****************************************************************************/ 126ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#ifndef _LINUX_WORKQUEUE_H 136ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define _LINUX_WORKQUEUE_H 146ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 156ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/timer.h> 166ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/linkage.h> 176ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/bitops.h> 186ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 196ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct workqueue_struct; 206ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 216ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct work_struct { 226ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned long pending; 236ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct list_head entry; 246ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh void (*func)(void *); 256ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh void *data; 266ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh void *wq_data; 276ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct timer_list timer; 286ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh}; 296ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 306ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct execute_work { 316ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct work_struct work; 326ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh}; 336ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 346ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define __WORK_INITIALIZER(n, f, d) { .entry = { &(n).entry, &(n).entry }, .func = (f), .data = (d), .timer = TIMER_INITIALIZER(NULL, 0, 0), } 356ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 366ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define DECLARE_WORK(n, f, d) struct work_struct n = __WORK_INITIALIZER(n, f, d) 376ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 386ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define PREPARE_WORK(_work, _func, _data) do { (_work)->func = _func; (_work)->data = _data; } while (0) 396ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 406ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#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) 416ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 426ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define create_workqueue(name) __create_workqueue((name), 0) 436ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define create_singlethread_workqueue(name) __create_workqueue((name), 1) 446ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 456ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif 46