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