#include <linux/kthread.h>
#include <linux/export.h>
#include <linux/slab.h>
#include <linux/workqueue.h>
#include "usbip_common.h"
struct usbip_event { … };
static DEFINE_SPINLOCK(event_lock);
static LIST_HEAD(event_list);
static void set_event(struct usbip_device *ud, unsigned long event)
{ … }
static void unset_event(struct usbip_device *ud, unsigned long event)
{ … }
static struct usbip_device *get_event(void)
{ … }
static struct task_struct *worker_context;
static void event_handler(struct work_struct *work)
{ … }
int usbip_start_eh(struct usbip_device *ud)
{ … }
EXPORT_SYMBOL_GPL(…);
void usbip_stop_eh(struct usbip_device *ud)
{ … }
EXPORT_SYMBOL_GPL(…);
#define WORK_QUEUE_NAME …
static struct workqueue_struct *usbip_queue;
static DECLARE_WORK(usbip_work, event_handler);
int usbip_init_eh(void)
{ … }
void usbip_finish_eh(void)
{ … }
void usbip_event_add(struct usbip_device *ud, unsigned long event)
{ … }
EXPORT_SYMBOL_GPL(…);
int usbip_event_happened(struct usbip_device *ud)
{ … }
EXPORT_SYMBOL_GPL(…);
int usbip_in_eh(struct task_struct *task)
{ … }
EXPORT_SYMBOL_GPL(…);