diff options
Diffstat (limited to 'src/pth.h')
-rw-r--r-- | src/pth.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/pth.h b/src/pth.h new file mode 100644 index 0000000..172e6cf --- /dev/null +++ b/src/pth.h @@ -0,0 +1,31 @@ +#pragma once +#include <stdbool.h> + +#include <pthsem.h> + + +struct prne_worker { + void *ctx; + void *(*entry)(void*); + void (*fin)(void*); + void (*free_ctx)(void*); + pth_t pth; +}; +typedef struct prne_worker prne_worker_t; + +struct prne_pth_cv { + pth_mutex_t *lock; + pth_cond_t *cond; + bool broadcast; +}; +typedef struct prne_pth_cv prne_pth_cv_t; + + +void prne_init_worker (prne_worker_t *w); +void prne_free_worker (prne_worker_t *w); +void prne_fin_worker (prne_worker_t *w); + +bool prne_pth_cv_notify (prne_pth_cv_t *cv); +bool prne_pth_cond_timedwait (prne_pth_cv_t *cv, const struct timespec *timeout, bool *to_reached); +int prne_unint_pth_poll (struct pollfd *fds, nfds_t nfds, const struct timespec *timeout); +void prne_unint_pth_nanosleep (struct timespec dur); |