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
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
[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
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
#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 */
/* Request stack checking */
#define EMPTH_STACKCHECK LWP_STACKCHECK
-#endif /* _EMPTH_LWP */
+#endif /* EMPTH_LWP */
-#ifdef _EMPTH_POSIX
+#ifdef EMPTH_POSIX
#include <pthread.h>
#define EMPTH_FD_READ 0x1
#define EMPTH_FD_WRITE 0x2
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
typedef struct loc_Sem_t empth_sem_t;
void empth_request_shutdown(void);
-#endif /* _EMPTH_WIN32 */
+#endif /* EMPTH_W32 */
/*
* Initialize thread package.
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
#include "prototypes.h"
#include "empthread.h"
-#ifdef _EMPTH_LWP
-
/* The thread `created' by lwpInitSystem() */
static empth_t *empth_main;
{
lwpWait(sm);
}
-
-#endif
#include "empthread.h"
#include "prototypes.h"
-#if defined(_WIN32) && defined(_EMPTH_WIN32)
#define WIN32
#include <winsock2.h>
#undef NS_ALL
loc_RunThisThread();
}
-
-#endif /* _WIN32 */
#include <stdarg.h>
-#ifdef _EMPTH_POSIX
-
#define EMPTH_KILLED 1
struct empth_t {
} else
pthread_mutex_unlock(&sm->mtx_update);
}
-
-#endif
#include "lwp.h"
#include "lwpint.h"
-#if defined(_EMPTH_LWP)
-
/*
* Implement machine-dependent functions lwpNewContext(),
* lwpSwitchContext().
}
#endif /* !UCONTEXT */
-
-#endif
#include "lwpint.h"
#include "prototypes.h"
-#if defined(_EMPTH_LWP)
-
struct lwpQueue LwpSchedQ[LWP_MAX_PRIO], LwpDeadQ;
struct lwpProc *LwpCurrent = NULL;
/* *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)
lwpStatus(newp, "Thread stack %d used, %d left, %d total",
used, total - used, total);
}
-
-#endif
#include "lwp.h"
#include "lwpint.h"
-#if defined(_EMPTH_LWP)
-
struct lwpProc *
lwpGetFirst(struct lwpQueue *q)
{
q->tail = p;
p->next = 0;
}
-
-#endif
#include "lwp.h"
#include "lwpint.h"
-#if defined(_EMPTH_LWP)
-
struct lwpSelect {
int maxfd;
int nfds;
}
/*NOTREACHED*/
}
-#endif
#include "lwp.h"
#include "lwpint.h"
-#if defined(_EMPTH_LWP)
-
/*
* create a lwpSemaphore.
*/
lwpReschedule();
}
}
-#endif
#include "lwp.h"
#include "lwpint.h"
-#if defined(_EMPTH_LWP)
-
void
lwpStatus(struct lwpProc *proc, char *format, ...)
{
}
va_end(ap);
}
-
-#endif