diff --git a/src/liblwevent/200_eventloop.c b/src/liblwevent/200_eventloop.c index a210568..6b39ef2 100644 --- a/src/liblwevent/200_eventloop.c +++ b/src/liblwevent/200_eventloop.c @@ -71,6 +71,18 @@ int lwevent_init(void) +/* lwevent_exit() + * Cleans up resources used by lwevent, putting the library into a state where it is ready to be + * re-initialised with lwevent_init(). + */ +void lwevent_exit(void) +{ + close(lwevent_epoll_fd); + free(_lw_revents); +} + + + /* lwevent_loop() * Convenience function which just keeps calling lwevent_wait(), with no timeout, until an error * occurs or lwevent_loop_exit is set. diff --git a/src/liblwevent/200_eventloop.h b/src/liblwevent/200_eventloop.h index 9289cc9..969db04 100644 --- a/src/liblwevent/200_eventloop.h +++ b/src/liblwevent/200_eventloop.h @@ -32,6 +32,19 @@ int lwevent_init(void); +/*! \brief Shut down library. + +Cleans up the library, closing the epoll file descriptor and freeing any memory used. Does not +free any of the memory associated with struct lwevent objects. If the library were to +be reinitialised, any objects that persisted could be activated on the new epoll file descriptor +with lwevent_reactivate(). Otherwise, such objects can be freed (even after exiting) with +lwevent_free(). + +*/ +void lwevent_exit(void); + + + /*! \brief Event loop exit flag. This flag, if set, signifies that lwevent_loop() should exit after its next iteration. It can be