diff --git a/GNUmakefile.in b/GNUmakefile.in index e2d4523e..d5adf4d5 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -44,7 +44,7 @@ LDLIBS := @LIBS@ empthread := @empthread@ ifeq ($(empthread),POSIX) CC := @PTHREAD_CC@ -CFLAGS := $(CFLAGS) @PTHREAD_CFLAGS@ -D_EMPTH_POSIX=1 +CFLAGS := $(CFLAGS) @PTHREAD_CFLAGS@ LDFLAGS := $(LDFLAGS) @PTHREAD_CFLAGS@ LDLIBS := @PTHREAD_LIBS@ $(LDLIBS) endif diff --git a/Make.mk b/Make.mk index b4040bc8..24b6b785 100644 --- a/Make.mk +++ b/Make.mk @@ -74,12 +74,17 @@ subjects.html := $(addprefix info.html/, $(addsuffix .html, $(subjects))) topics.html := $(addprefix info.html/, $(addsuffix .html, $(topics))) info.html := $(addprefix info.html/, $(addsuffix .html, $(info))) +ifeq ($(empthread),LWP) +empth_obj := src/lib/empthread/lwp.o +empth_lib := lib/liblwp.a +endif ifeq ($(empthread),POSIX) empth_obj := src/lib/empthread/pthread.o empth_lib := -else -empth_obj := src/lib/empthread/lwp.o -empth_lib := lib/liblwp.a +endif +ifeq ($(empthread),Windows) +empth_obj := src/lib/empthread/ntthread.o +empth_lib := endif # Abbreviations diff --git a/configure.ac b/configure.ac index 37013631..d3cd103d 100644 --- a/configure.ac +++ b/configure.ac @@ -99,6 +99,7 @@ AC_ARG_WITH([pthread], [use POSIX threads])) # Select thread package +# TODO Windows case "$ac_cv_func_makecontext$acx_pthread_ok" in yesyes) if test -z "$with_pthread" || test "$with_pthread" = no; then @@ -116,6 +117,11 @@ yes*) esac AC_SUBST(empthread) AC_MSG_NOTICE([Using $empthread threads]) +case $empthread in +LWP) AC_DEFINE([EMPTH_LWP], 1, [Define to use LWP threads]) ;; +POSIX) AC_DEFINE([EMPTH_POSIX], 1, [Define to use POSIX threads]) ;; +Windows) AC_DEFINE([EMPTH_W32], 1, [Define to use Windows threads]) ;; +esac op= if test "$with_pthread" = no; then diff --git a/include/empthread.h b/include/empthread.h index 8fee0f55..916ff23f 100644 --- a/include/empthread.h +++ b/include/empthread.h @@ -48,15 +48,7 @@ #ifndef _EMTHREAD_H_ #define _EMTHREAD_H_ -#include "misc.h" - -#if defined(_WIN32) -#undef _EMPTH_LWP -#undef _EMPTH_POSIX -#define _EMPTH_WIN32 -#endif - -#ifdef _EMPTH_LWP +#ifdef EMPTH_LWP #include "lwp.h" /* Abstract data types */ @@ -77,9 +69,9 @@ typedef struct lwpSem empth_sem_t; /* Request stack checking */ #define EMPTH_STACKCHECK LWP_STACKCHECK -#endif /* _EMPTH_LWP */ +#endif /* EMPTH_LWP */ -#ifdef _EMPTH_POSIX +#ifdef EMPTH_POSIX #include #define EMPTH_FD_READ 0x1 #define EMPTH_FD_WRITE 0x2 @@ -90,9 +82,9 @@ typedef struct lwpSem empth_sem_t; typedef struct empth_t empth_t; typedef struct empth_sem_t empth_sem_t; -#endif /* _EMPTH_POSIX */ +#endif /* EMPTH_POSIX */ -#if defined(_EMPTH_WIN32) +#ifdef EMPTH_W32 /* The Windows NT Threads */ #define EMPTH_FD_READ 0x1 #define EMPTH_FD_WRITE 0x2 @@ -104,7 +96,7 @@ typedef struct loc_Thread_t empth_t; typedef struct loc_Sem_t empth_sem_t; void empth_request_shutdown(void); -#endif /* _EMPTH_WIN32 */ +#endif /* EMPTH_W32 */ /* * Initialize thread package. diff --git a/include/misc.h b/include/misc.h index 9cf0da1e..241ca331 100644 --- a/include/misc.h +++ b/include/misc.h @@ -99,11 +99,6 @@ struct mob_acc_globals { typedef u_char natid; /* NSC_NATID must match this */ -#if !defined (_EMPTH_LWP) && !defined (_EMPTH_POSIX) -#define _EMPTH_LWP 1 -#endif - - #if !defined(aix) && !defined(sgi) typedef char s_char; /* change to signed char for aix */ #else diff --git a/src/lib/empthread/lwp.c b/src/lib/empthread/lwp.c index 3b0fe65c..f6746520 100644 --- a/src/lib/empthread/lwp.c +++ b/src/lib/empthread/lwp.c @@ -37,8 +37,6 @@ #include "prototypes.h" #include "empthread.h" -#ifdef _EMPTH_LWP - /* The thread `created' by lwpInitSystem() */ static empth_t *empth_main; @@ -134,5 +132,3 @@ empth_sem_wait(empth_sem_t *sm) { lwpWait(sm); } - -#endif diff --git a/src/lib/empthread/ntthread.c b/src/lib/empthread/ntthread.c index 155ea520..a53ab6c9 100644 --- a/src/lib/empthread/ntthread.c +++ b/src/lib/empthread/ntthread.c @@ -54,7 +54,6 @@ #include "empthread.h" #include "prototypes.h" -#if defined(_WIN32) && defined(_EMPTH_WIN32) #define WIN32 #include #undef NS_ALL @@ -683,5 +682,3 @@ empth_sem_wait(empth_sem_t *pSem) loc_RunThisThread(); } - -#endif /* _WIN32 */ diff --git a/src/lib/empthread/pthread.c b/src/lib/empthread/pthread.c index 0f7614c6..8ccea93e 100644 --- a/src/lib/empthread/pthread.c +++ b/src/lib/empthread/pthread.c @@ -51,8 +51,6 @@ #include -#ifdef _EMPTH_POSIX - #define EMPTH_KILLED 1 struct empth_t { @@ -454,5 +452,3 @@ empth_sem_wait(empth_sem_t *sm) } else pthread_mutex_unlock(&sm->mtx_update); } - -#endif diff --git a/src/lib/lwp/arch.c b/src/lib/lwp/arch.c index fce4d81e..9c0ee6c4 100644 --- a/src/lib/lwp/arch.c +++ b/src/lib/lwp/arch.c @@ -38,8 +38,6 @@ #include "lwp.h" #include "lwpint.h" -#if defined(_EMPTH_LWP) - /* * Implement machine-dependent functions lwpNewContext(), * lwpSwitchContext(). @@ -468,5 +466,3 @@ lwpSwitchContext(struct lwpProc *oldp, struct lwpProc *nextp) } #endif /* !UCONTEXT */ - -#endif diff --git a/src/lib/lwp/lwp.c b/src/lib/lwp/lwp.c index 845cf6a8..a3a3e47b 100644 --- a/src/lib/lwp/lwp.c +++ b/src/lib/lwp/lwp.c @@ -31,8 +31,6 @@ #include "lwpint.h" #include "prototypes.h" -#if defined(_EMPTH_LWP) - struct lwpQueue LwpSchedQ[LWP_MAX_PRIO], LwpDeadQ; struct lwpProc *LwpCurrent = NULL; @@ -310,9 +308,9 @@ lwpInitSystem(int pri, char **ctxptr, int flags) /* *LwpContextPtr = 0; */ LwpStackGrowsDown = growsdown(&marker); if (!(LwpCurrent = calloc(1, sizeof(struct lwpProc)))) - return 0; + return NULL; if (!(stack = malloc(64))) - return 0; + return NULL; if (LWP_MAX_PRIO <= pri) pri = LWP_MAX_PRIO - 1; if (LwpMaxpri < pri) @@ -407,5 +405,3 @@ lwpStackCheckUsed(struct lwpProc *newp) lwpStatus(newp, "Thread stack %d used, %d left, %d total", used, total - used, total); } - -#endif diff --git a/src/lib/lwp/queue.c b/src/lib/lwp/queue.c index e7ea4442..98b84ed5 100644 --- a/src/lib/lwp/queue.c +++ b/src/lib/lwp/queue.c @@ -26,8 +26,6 @@ #include "lwp.h" #include "lwpint.h" -#if defined(_EMPTH_LWP) - struct lwpProc * lwpGetFirst(struct lwpQueue *q) { @@ -48,5 +46,3 @@ lwpAddTail(register struct lwpQueue *q, register struct lwpProc *p) q->tail = p; p->next = 0; } - -#endif diff --git a/src/lib/lwp/sel.c b/src/lib/lwp/sel.c index 2668ec9a..eca2a4be 100644 --- a/src/lib/lwp/sel.c +++ b/src/lib/lwp/sel.c @@ -44,8 +44,6 @@ #include "lwp.h" #include "lwpint.h" -#if defined(_EMPTH_LWP) - struct lwpSelect { int maxfd; int nfds; @@ -228,4 +226,3 @@ lwpSelect(void *arg) } /*NOTREACHED*/ } -#endif diff --git a/src/lib/lwp/sem.c b/src/lib/lwp/sem.c index b4fdae1f..5ae076d3 100644 --- a/src/lib/lwp/sem.c +++ b/src/lib/lwp/sem.c @@ -29,8 +29,6 @@ #include "lwp.h" #include "lwpint.h" -#if defined(_EMPTH_LWP) - /* * create a lwpSemaphore. */ @@ -79,4 +77,3 @@ lwpWait(struct lwpSem *s) lwpReschedule(); } } -#endif diff --git a/src/lib/lwp/status.c b/src/lib/lwp/status.c index 863d4bc1..5b5e2292 100644 --- a/src/lib/lwp/status.c +++ b/src/lib/lwp/status.c @@ -39,8 +39,6 @@ #include "lwp.h" #include "lwpint.h" -#if defined(_EMPTH_LWP) - void lwpStatus(struct lwpProc *proc, char *format, ...) { @@ -67,5 +65,3 @@ lwpStatus(struct lwpProc *proc, char *format, ...) } va_end(ap); } - -#endif