syslog() reentrant when compiling with -pthread?

M. Warner Losh imp at bsdimp.com
Thu Oct 7 20:35:39 PDT 2004


In message: <A3E829CE-1820-11D9-AB94-003065F9345A at msys.ch>
            Marc Balmer <marc at msys.ch> writes:
: Am 06.10.2004 um 16:48 schrieb Dan Nelson:
: 
: > The only unsafe part is openlog(), so set that up before you start any
: > threads and you'll be okay.  Once the log fd is opened, the syslog()
: > call looks to be thread-safe.  Everything in there is done with local
: > variables and atomic writes.
: 
: At least on OpenBSD I can use "%m" in the syslog() format string.  This 
: results in a call to strerror(), which is not thread safe, AFAIK.  This 
: probably is true for FreeBSD as well, so we have the following three 
: conditions for thread safe syslog():
: 
: 1) openlog() must be called before any threads that use syslog() are 
: started.
: 2) The first argument to openlog() must not be NULL.
: 3) The "%m" Format String must not be used in syslog() calls.
: 
: Any comments?

strerror is thread safe, unless your errno is outside of the valid
range.

Warner


More information about the freebsd-hackers mailing list