daemon: Introduce log mutex.
authorAndre Noll <maan@tuebingen.mpg.de>
Mon, 7 Aug 2017 22:02:03 +0000 (00:02 +0200)
committerAndre Noll <maan@tuebingen.mpg.de>
Tue, 13 Mar 2018 02:28:10 +0000 (03:28 +0100)
commitced0c17d1a3ee0336dc7b35e69faff131dabecac
treed30a71877a11304b0fed328f5dd5f38cba89896c
parent7f08e8b0eb9570f1eb787dbb4e10d56585b36bbf
daemon: Introduce log mutex.

Currently the server processes append messages to the log file without
coordination. This usually does not cause problems, but sometimes
the log messages of the main server process and the afs process get
interleaved due to the lack of serialization.

This patch serializes access to the common log file by employing a
new lock: the log_mutex. Like the mmd_mutex, it is realized as an
one-element System V semaphore set.

Logging is performed by the daemon subsystem implemented in daemon.c.
This subsystem is also used by para_audiod which is single-threaded
and thus does not need to care about serialization of log messages.
To keep daemon.c working for both para_server and para_audiod,
struct daemon gains two optional methods, ->pre_log_hook and
->post_log_hook. If the function pointers are not NULL, the methods
are called before and after a message is logged. For para_server
the methods call back to the server code to take and release the
lock. para_audiod does not need to be modified because if the new
function pointers are left at their default value NULL, so no hooks
are called.
daemon.c
daemon.h
server.c