⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.23
Server IP:
178.33.27.10
Server:
Linux cpanel.dev-unit.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
Server Software:
Apache/2.4.57 (Unix) OpenSSL/1.0.2k-fips
PHP Version:
8.2.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
local
/
src
/
netdata
/
src
/
libnetdata
/
completion
/
View File Name :
completion.c
// 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; }