Program for testing concurrent access to syslogd.
authorMark Whitley <markw@lineo.com>
Mon, 12 Mar 2001 20:00:00 +0000 (20:00 -0000)
committerMark Whitley <markw@lineo.com>
Mon, 12 Mar 2001 20:00:00 +0000 (20:00 -0000)
tests/tst-syslogd.c [new file with mode: 0644]

diff --git a/tests/tst-syslogd.c b/tests/tst-syslogd.c
new file mode 100644 (file)
index 0000000..bae10af
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ *  tst-syslogd.c - tests concurrent threads calling syslog
+ *
+ *  build with: gcc -Wall tst-syslogd.c -lpthread
+ */
+
+#include <stdio.h>
+#include <pthread.h>
+#include <syslog.h>
+#include <unistd.h>
+
+void *log_func(void *arg)
+{
+       int i;
+       int thrid = (int)arg;
+
+       openlog(NULL, LOG_PERROR | LOG_PID, LOG_USER);
+       for (i = 0; i < 10; i++) {
+               syslog(LOG_DEBUG, "thread %i iter %i\n", thrid, i);
+               sleep(thrid); /* this mixes things up a bit */
+       }
+       closelog();
+
+       return NULL;
+}
+
+int main(int argc, char **argv)
+{
+       pthread_t thr1, thr2, thr3;
+       int id1 = 1;
+       int id2 = 2;
+       int id3 = 3;
+
+       pthread_create(&thr1, NULL, log_func, (void *)id1);
+       pthread_create(&thr2, NULL, log_func, (void *)id2);
+       pthread_create(&thr3, NULL, log_func, (void *)id3);
+
+       pthread_join(thr1, NULL);
+       pthread_join(thr2, NULL);
+       pthread_join(thr3, NULL);
+
+       return 0;
+}
+