]> git.openfabrics.org - ~shefty/rdma-dev.git/blobdiff - include/linux/workqueue.h
workqueues: introduce __cancel_delayed_work()
[~shefty/rdma-dev.git] / include / linux / workqueue.h
index 13e1adf55c4c7c0ba30d81bbc54abe6d56b93b5e..6273fa97b527e4d8c415ebbda74c0ac68303532e 100644 (file)
@@ -240,6 +240,21 @@ static inline int cancel_delayed_work(struct delayed_work *work)
        return ret;
 }
 
+/*
+ * Like above, but uses del_timer() instead of del_timer_sync(). This means,
+ * if it returns 0 the timer function may be running and the queueing is in
+ * progress.
+ */
+static inline int __cancel_delayed_work(struct delayed_work *work)
+{
+       int ret;
+
+       ret = del_timer(&work->timer);
+       if (ret)
+               work_clear_pending(&work->work);
+       return ret;
+}
+
 extern int cancel_delayed_work_sync(struct delayed_work *work);
 
 /* Obsolete. use cancel_delayed_work_sync() */