daemon: Add documentation of daemon_set_hooks().
[paraslash.git] / daemon.c
index bfa81487430f62dc7417db6ba6e0c6d53c008051..a4e2f3193730d456ce9908eb55888cdb759154e0 100644 (file)
--- a/daemon.c
+++ b/daemon.c
@@ -146,6 +146,22 @@ void daemon_set_loglevel(const char *loglevel)
        me->loglevel = ret;
 }
 
+/**
+ * Register functions to be called before and after a message is logged.
+ *
+ * \param pre_log_hook Called before the message is logged.
+ * \param post_log_hook Called after the message is logged.
+ *
+ * The purpose of this function is to provide a primitive for multi-threaded
+ * applications to serialize the access to the log facility, preventing
+ * interleaving log messages. This can be achieved by having the pre-log hook
+ * acquire a lock which blocks the other threads on the attempt to log a
+ * message at the same time.  The post-log hook is responsible for releasing
+ * the lock.
+ *
+ * If these hooks are unnecessary, for example because the application is
+ * single-threaded, this function does not need to be called.
+ */
 void daemon_set_hooks(void (*pre_log_hook)(void), void (*post_log_hook)(void))
 {
        me->pre_log_hook = pre_log_hook;