summaryrefslogtreecommitdiffstats
path: root/sys/ofed/include/linux/workqueue.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/ofed/include/linux/workqueue.h')
-rw-r--r--sys/ofed/include/linux/workqueue.h21
1 files changed, 16 insertions, 5 deletions
diff --git a/sys/ofed/include/linux/workqueue.h b/sys/ofed/include/linux/workqueue.h
index b895bd3..38cd2fe 100644
--- a/sys/ofed/include/linux/workqueue.h
+++ b/sys/ofed/include/linux/workqueue.h
@@ -2,6 +2,7 @@
* Copyright (c) 2010 Isilon Systems, Inc.
* Copyright (c) 2010 iX Systems, Inc.
* Copyright (c) 2010 Panasas, Inc.
+ * Copyright (c) 2013, 2014 Mellanox Technologies, Ltd.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -90,11 +91,12 @@ do { \
#define flush_scheduled_work() flush_taskqueue(taskqueue_thread)
-#define queue_work(q, work) \
-do { \
- (work)->taskqueue = (q)->taskqueue; \
- taskqueue_enqueue((q)->taskqueue, &(work)->work_task); \
-} while (0)
+static inline int queue_work (struct workqueue_struct *q, struct work_struct *work)
+{
+ (work)->taskqueue = (q)->taskqueue;
+ /* Return opposite val to align with Linux logic */
+ return !taskqueue_enqueue((q)->taskqueue, &(work)->work_task);
+}
static inline void
_delayed_work_fn(void *arg)
@@ -209,4 +211,13 @@ cancel_delayed_work_sync(struct delayed_work *work)
return 0;
}
+static inline bool
+mod_delayed_work(struct workqueue_struct *wq, struct delayed_work *dwork,
+ unsigned long delay)
+{
+ cancel_delayed_work(dwork);
+ queue_delayed_work(wq, dwork, delay);
+ return false;
+}
+
#endif /* _LINUX_WORKQUEUE_H_ */
OpenPOWER on IntegriCloud