summaryrefslogtreecommitdiff
path: root/lib/workqueue.c
diff options
context:
space:
mode:
authorvivek <vivek@cumulusnetworks.com>2018-03-10 04:03:41 +0000
committervivek <vivek@cumulusnetworks.com>2018-03-10 04:03:41 +0000
commit4e262455a252c700f81df75fb8107d112062bba8 (patch)
treefbd55c66eebe78ccb60424e560548d1613aa403a /lib/workqueue.c
parentbfd498f0dab9a1937c6036cd35ed020b64a69e8f (diff)
parent58e7db106d5907cb129fcc316f02ce0bf34e3885 (diff)
Merge branch 'master' of https://github.com/frrouting/frr into evpn-ipv6-tenant-routing
Conflicts: bgpd/bgp_evpn.c
Diffstat (limited to 'lib/workqueue.c')
-rw-r--r--lib/workqueue.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/workqueue.c b/lib/workqueue.c
index 952012a006..1af51c06c1 100644
--- a/lib/workqueue.c
+++ b/lib/workqueue.c
@@ -101,7 +101,7 @@ struct work_queue *work_queue_new(struct thread_master *m,
return new;
}
-void work_queue_free(struct work_queue *wq)
+void work_queue_free_original(struct work_queue *wq)
{
if (wq->thread != NULL)
thread_cancel(wq->thread);
@@ -119,6 +119,12 @@ void work_queue_free(struct work_queue *wq)
return;
}
+void work_queue_free_and_null(struct work_queue **wq)
+{
+ work_queue_free_original(*wq);
+ *wq = NULL;
+}
+
bool work_queue_is_scheduled(struct work_queue *wq)
{
return (wq->thread != NULL);
@@ -127,8 +133,8 @@ bool work_queue_is_scheduled(struct work_queue *wq)
static int work_queue_schedule(struct work_queue *wq, unsigned int delay)
{
/* if appropriate, schedule work queue thread */
- if (CHECK_FLAG(wq->flags, WQ_UNPLUGGED) && (wq->thread == NULL) &&
- !work_queue_empty(wq)) {
+ if (CHECK_FLAG(wq->flags, WQ_UNPLUGGED) && (wq->thread == NULL)
+ && !work_queue_empty(wq)) {
wq->thread = NULL;
thread_add_timer_msec(wq->master, work_queue_run, wq, delay,
&wq->thread);
@@ -159,7 +165,8 @@ void work_queue_add(struct work_queue *wq, void *data)
return;
}
-static void work_queue_item_requeue(struct work_queue *wq, struct work_queue_item *item)
+static void work_queue_item_requeue(struct work_queue *wq,
+ struct work_queue_item *item)
{
work_queue_item_dequeue(wq, item);