Add missing log functions from Hannes tree
authorChristophe Varoqui <christophe.varoqui@opensvc.com>
Sat, 12 Jan 2013 13:07:09 +0000 (14:07 +0100)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Sat, 12 Jan 2013 13:10:41 +0000 (14:10 +0100)
log_thread_flush()
log_reset()

libmultipath/log.c
libmultipath/log.h
libmultipath/log_pthread.c
libmultipath/log_pthread.h

index 57b7696..37c7cd7 100644 (file)
@@ -96,6 +96,12 @@ void log_close (void)
        return;
 }
 
+void log_reset (char *program_name)
+{
+       closelog();
+       openlog(program_name, 0, LOG_DAEMON);
+}
+
 int log_enqueue (int prio, const char * fmt, va_list ap)
 {
        int len, fwd;
index 6634c83..984f047 100644 (file)
@@ -33,6 +33,7 @@ struct logarea * la;
 
 int log_init (char * progname, int size);
 void log_close (void);
+void log_reset (char * progname);
 int log_enqueue (int prio, const char * fmt, va_list ap);
 int log_dequeue (void *);
 void log_syslog (void *);
index 9e92a70..c5c4d65 100644 (file)
@@ -52,6 +52,19 @@ void log_safe (int prio, const char * fmt, va_list ap)
        pthread_sigmask(SIG_SETMASK, &old, NULL);
 }
 
+void log_thread_flush (void)
+{
+       int empty;
+
+       do {
+               pthread_mutex_lock(&logq_lock);
+               empty = log_dequeue(la->buff);
+               pthread_mutex_unlock(&logq_lock);
+               if (!empty)
+                       log_syslog(la->buff);
+       } while (empty == 0);
+}
+
 static void flush_logqueue (void)
 {
        int empty;
@@ -138,3 +151,4 @@ void log_thread_stop (void)
 
        log_close();
 }
+
index f3b70ea..e5c6499 100644 (file)
@@ -14,5 +14,6 @@ extern int logq_running;
 void log_safe(int prio, const char * fmt, va_list ap);
 void log_thread_start(pthread_attr_t *attr);
 void log_thread_stop(void);
+void log_thread_flush(void);
 
 #endif /* _LOG_PTHREAD_H */