4.1.1.1.4. Work Queue Example
#define DECLARE_WORK(name, func, data) \
struct work_struct name = { data, NULL, func)

// Create a work queue with a kernel thread to serve it
struct workqueue_struct *create_workqueue (const char *name);

// Request executing work by a given work queue
int queue_work (
  struct workqueue_struct *queue,
  struct work_struct *work);
int queue_delayed_work (
  struct workqueue_struct *queue,
  struct work_struct *work,
  unsigned long delay);

// Request executing work by the default work queue
int schedule_work (
  struct work_struct *work);
int schedule_delayed_work (
  struct work_struct *work,
  unsigned long delay);

void flush_workqueue (struct workqueue_struct *queue);