#if defined(AFS_PTHREAD_ENV)
#include <pthread.h>
+static pthread_once_t serverLogOnce = PTHREAD_ONCE_INIT;
static pthread_mutex_t serverLogMutex;
#define LOCK_SERVERLOG() opr_Verify(pthread_mutex_lock(&serverLogMutex) == 0)
#define UNLOCK_SERVERLOG() opr_Verify(pthread_mutex_unlock(&serverLogMutex) == 0)
#endif
}
+#if defined(AFS_PTHREAD_ENV)
+static void
+InitServerLogMutex(void)
+{
+ opr_Verify(pthread_mutex_init(&serverLogMutex, NULL) == 0);
+}
+#endif /* AFS_PTHREAD_ENV */
+
int
OpenLog(const char *fileName)
{
#ifndef AFS_NT40_ENV
struct stat statbuf;
+#endif
+#if defined(AFS_PTHREAD_ENV)
+ opr_Verify(pthread_once(&serverLogOnce, InitServerLogMutex) == 0);
+#endif /* AFS_PTHREAD_ENV */
+
+#ifndef AFS_NT40_ENV
if (serverLogSyslog) {
openlog(serverLogSyslogTag, LOG_PID, serverLogSyslogFacility);
return (0);
#endif
}
-#if defined(AFS_PTHREAD_ENV)
- opr_Verify(pthread_mutex_init(&serverLogMutex, NULL) == 0);
-#endif /* AFS_PTHREAD_ENV */
-
serverLogFD = tempfd;
return 0;