diff options
Diffstat (limited to 'src/shared/signal.h')
-rw-r--r-- | src/shared/signal.h | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/src/shared/signal.h b/src/shared/signal.h index 6fd2765..3eea6fb 100644 --- a/src/shared/signal.h +++ b/src/shared/signal.h @@ -5,23 +5,25 @@ #define SIGNAL_TIMEOUT (-2) #define SIGNAL_ERROR (-1) +typedef struct _dnbd3_signal dnbd3_signal_t; + /** - * Create a new signal fd (eventfd), nonblocking. - * @return >= 0 on success, which is the fd; < 0 on error + * Create a new signal, nonblocking. + * @return NULL on error, pointer to dnbd3_signal_t on success. */ -int signal_new(); +dnbd3_signal_t* signal_new(); /** - * Create a new signal fd (eventfd), blocking. - * @return >= 0 on success, which is the fd; < 0 on error + * Create a new signal, blocking. + * @return NULL on error, pointer to dnbd3_signal_t on success. */ -int signal_newBlocking(); +dnbd3_signal_t* signal_newBlocking(); /** * Trigger the given signal, so a wait or clear call will succeed. * @return SIGNAL_OK on success, SIGNAL_ERROR on error */ -int signal_call(int signalFd); +int signal_call(const dnbd3_signal_t* const signal); /** * Wait for given signal, with an optional timeout. @@ -31,18 +33,25 @@ int signal_call(int signalFd); * SIGNAL_TIMEOUT if the timeout was reached, * SIGNAL_ERROR if some error occured */ -int signal_wait(int signalFd, int timeoutMs); +int signal_wait(const dnbd3_signal_t* const signal, int timeoutMs); /** - * Clears any pending signals on this signal fd. + * Clears any pending signals on this signal. * @return number of signals that were pending, * SIGNAL_ERROR if some error occured */ -int signal_clear(int signalFd); +int signal_clear(const dnbd3_signal_t* const signal); /** * Close the given signal. */ -void signal_close(int signalFd); +void signal_close(const dnbd3_signal_t* const signal); + +/** + * Get a file descriptor for the given signal that can be + * waited on using poll or similar. + * @return -1 if the signal is invalid + */ +int signal_getWaitFd(const dnbd3_signal_t* const signal); #endif |