* Chas Woodfield, Fretwell Downing Informatics.
*
* $Log: statserv.c,v $
- * Revision 1.73 2001-06-28 09:27:06 adam
+ * Revision 1.76 2001-10-05 13:55:17 adam
+ * Added defines YAZ_GNU_THREADS, YAZ_POSIX_THREADS in code and yaz-config
+ *
+ * Revision 1.75 2001/10/04 00:37:58 adam
+ * Fixes for GNU threads (not working yet).
+ *
+ * Revision 1.74 2001/10/03 23:55:18 adam
+ * GNU threads support.
+ *
+ * Revision 1.73 2001/06/28 09:27:06 adam
* Number of started sessions logged.
*
* Revision 1.72 2001/03/25 21:55:13 adam
#include <direct.h>
#include "service.h"
#else
-#if HAVE_PTHREAD_H
-#include <pthread.h>
-#endif
#include <unistd.h>
#include <pwd.h>
#endif
+
+#if YAZ_POSIX_THREADS
+#include <pthread.h>
+#elif YAZ_GNU_THREADS
+#include <pth.h>
+#endif
+
#include <fcntl.h>
#include <signal.h>
#include <errno.h>
iochan_setflags(h, EVENT_INPUT | EVENT_EXCEPT); /* reset listener */
++no_sessions;
}
-#if HAVE_PTHREAD_H
+#if YAZ_POSIX_THREADS
if (control_block.threads)
{
pthread_t child_thread;
}
else
new_session(new_line);
+#elif YAZ_GNU_THREADS
+ if (control_block.threads)
+ {
+ pth_attr_t attr;
+ pth_t child_thread;
+
+ attr = pth_attr_new ();
+ pth_attr_set (attr, PTH_ATTR_JOINABLE, FALSE);
+ pth_attr_set (attr, PTH_ATTR_STACK_SIZE, 32*1024);
+ pth_attr_set (attr, PTH_ATTR_NAME, "session");
+ yaz_log (LOG_LOG, "pth_spawn begin");
+ child_thread = pth_spawn (attr, new_session, new_line);
+ yaz_log (LOG_LOG, "pth_spawn finish");
+ pth_attr_destroy (attr);
+ }
+ else
+ new_session(new_line);
#else
new_session(new_line);
#endif
control_block.dynamic = 0;
break;
case 'T':
-#if HAVE_PTHREAD_H
+#if YAZ_POSIX_THREADS
+ control_block.dynamic = 0;
+ control_block.threads = 1;
+#elif YAZ_GNU_THREADS
control_block.dynamic = 0;
control_block.threads = 1;
#else