diff options
author | Simon Rettberg | 2015-11-21 12:24:21 +0100 |
---|---|---|
committer | Simon Rettberg | 2015-11-21 12:24:21 +0100 |
commit | 4c94cb861dfbfe2a8c9c165165cbdbc062eaa39b (patch) | |
tree | 5ef29b28a920626b572a0d6dd378440ddb7f885b /src/shared/signal.h | |
parent | [SERVER] Improve image related locking (diff) | |
download | dnbd3-4c94cb861dfbfe2a8c9c165165cbdbc062eaa39b.tar.gz dnbd3-4c94cb861dfbfe2a8c9c165165cbdbc062eaa39b.tar.xz dnbd3-4c94cb861dfbfe2a8c9c165165cbdbc062eaa39b.zip |
[FUSE] Start refactoring so we can handle multithread fuse
Diffstat (limited to 'src/shared/signal.h')
-rw-r--r-- | src/shared/signal.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/shared/signal.h b/src/shared/signal.h new file mode 100644 index 0000000..0e2f85f --- /dev/null +++ b/src/shared/signal.h @@ -0,0 +1,49 @@ +#ifndef _SIGNAL_H_ +#define _SIGNAL_H_ + +#define SIGNAL_OK (0) +#define SIGNAL_TIMEOUT (-2) +#define SIGNAL_ERROR (-1) + +/** + * Create a new signal fd (eventfd), nonblocking. + * @return >= 0 on success, which is the fd; < 0 on error + */ +int signal_new(); + +/** + * Create a new signal fd (eventfd), blocking. + * @return >= 0 on success, which is the fd; < 0 on error + */ +int 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); + +/** + * Wait for given signal, with an optional timeout. + * If timeout == 0, just poll once. + * If timeout < 0, wait forever. + * @return > 0 telling how many times the signal was called, + * SIGNAL_TIMEOUT if the timeout was reached, + * SIGNAL_ERROR if some error occured + */ +int signal_wait(int signalFd, int timeoutMs); + +/** + * Clears any pending signals on this signal fd. + * @return number of signals that were pending, + * SIGNAL_ERROR if some error occured + */ +int signal_clear(int signalFd); + +/** + * Close the given signal. + */ +void signal_close(int signalFd); + +#endif + |