diff options
Diffstat (limited to '')
-rw-r--r-- | libnetdata/completion/Makefile.am | 4 | ||||
-rw-r--r-- | libnetdata/completion/completion.c | 64 | ||||
-rw-r--r-- | src/libnetdata/completion/completion.h (renamed from libnetdata/completion/completion.h) | 4 |
3 files changed, 4 insertions, 68 deletions
diff --git a/libnetdata/completion/Makefile.am b/libnetdata/completion/Makefile.am deleted file mode 100644 index babdcf0df..000000000 --- a/libnetdata/completion/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -AUTOMAKE_OPTIONS = subdir-objects -MAINTAINERCLEANFILES = $(srcdir)/Makefile.in diff --git a/libnetdata/completion/completion.c b/libnetdata/completion/completion.c deleted file mode 100644 index 6257e0299..000000000 --- a/libnetdata/completion/completion.c +++ /dev/null @@ -1,64 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "completion.h" - -void completion_init(struct completion *p) -{ - p->completed = 0; - p->completed_jobs = 0; - fatal_assert(0 == uv_cond_init(&p->cond)); - fatal_assert(0 == uv_mutex_init(&p->mutex)); -} - -void completion_destroy(struct completion *p) -{ - uv_cond_destroy(&p->cond); - uv_mutex_destroy(&p->mutex); -} - -void completion_wait_for(struct completion *p) -{ - uv_mutex_lock(&p->mutex); - while (0 == p->completed) { - uv_cond_wait(&p->cond, &p->mutex); - } - fatal_assert(1 == p->completed); - uv_mutex_unlock(&p->mutex); -} - -void completion_mark_complete(struct completion *p) -{ - uv_mutex_lock(&p->mutex); - p->completed = 1; - uv_cond_broadcast(&p->cond); - uv_mutex_unlock(&p->mutex); -} - -unsigned completion_wait_for_a_job(struct completion *p, unsigned completed_jobs) -{ - uv_mutex_lock(&p->mutex); - while (0 == p->completed && p->completed_jobs <= completed_jobs) { - uv_cond_wait(&p->cond, &p->mutex); - } - completed_jobs = p->completed_jobs; - uv_mutex_unlock(&p->mutex); - - return completed_jobs; -} - -void completion_mark_complete_a_job(struct completion *p) -{ - uv_mutex_lock(&p->mutex); - p->completed_jobs++; - uv_cond_broadcast(&p->cond); - uv_mutex_unlock(&p->mutex); -} - -bool completion_is_done(struct completion *p) -{ - bool ret; - uv_mutex_lock(&p->mutex); - ret = p->completed; - uv_mutex_unlock(&p->mutex); - return ret; -} diff --git a/libnetdata/completion/completion.h b/src/libnetdata/completion/completion.h index 723f73688..908ccfaf6 100644 --- a/libnetdata/completion/completion.h +++ b/src/libnetdata/completion/completion.h @@ -18,6 +18,10 @@ void completion_destroy(struct completion *p); void completion_wait_for(struct completion *p); +// Wait for at most `timeout` seconds. Return true on success, false on +// error or timeout. +bool completion_timedwait_for(struct completion *p, uint64_t timeout); + void completion_mark_complete(struct completion *p); unsigned completion_wait_for_a_job(struct completion *p, unsigned completed_jobs); |