]> git.pond.sub.org Git - empserver/blobdiff - include/empthread.h
WIP empdump, %a
[empserver] / include / empthread.h
index ea8ab88bc42ccf228ba773e006cf490115803614..18ac89ad4b2bd768c89337f90c0ee5603ce81c78 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2007, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *  Copyright (C) 1986-2008, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                           Ken Stevens, Steve McClure
  *
  *  This program is free software; you can redistribute it and/or modify
 
 #include <time.h>
 
-/* thread priorities */
-enum {
-    PP_MAIN     = 7,
-    PP_UPDATE   = 6,
-    PP_SHUTDOWN         = 5,
-    PP_SCHED    = 4,
-    PP_TIMESTAMP = 2,
-    PP_PLAYER   = 3,
-    PP_ACCEPT   = 3,
-    PP_KILLIDLE         = 2
-};
-
 #ifdef EMPTH_LWP
 #include "lwp.h"
 
@@ -71,9 +59,6 @@ enum {
 /* empth_t * represents a thread.  */
 typedef struct lwpProc empth_t;
 
-/* empth_sem_t * represents a semaphore */
-typedef struct lwpSem empth_sem_t;
-
 /* empth_rwlock_t * represents a read-write lock */
 typedef struct lwp_rwlock empth_rwlock_t;
 
@@ -97,7 +82,6 @@ typedef struct lwp_rwlock empth_rwlock_t;
 #define EMPTH_STACKCHECK  0x2
 
 typedef struct empth_t empth_t;
-typedef struct empth_sem_t empth_sem_t;
 typedef struct empth_rwlock_t empth_rwlock_t;
 
 #endif /* EMPTH_POSIX */
@@ -111,7 +95,6 @@ typedef struct empth_rwlock_t empth_rwlock_t;
 #define EMPTH_STACKCHECK  0x2
 
 typedef struct loc_Thread empth_t;
-typedef struct loc_Sem empth_sem_t;
 typedef struct loc_RWLock empth_rwlock_t;
 
 void empth_request_shutdown(void);
@@ -128,7 +111,6 @@ int empth_init(void **ctx, int flags);
 
 /*
  * Create a new thread.
- * PRIO is the scheduling priority.
  * ENTRY is the entry point.  It will be called with argument UD.
  * Thread stack is at least SIZE bytes.
  * FLAGS should be the same as were passed to empth_init(), or zero.
@@ -139,7 +121,7 @@ int empth_init(void **ctx, int flags);
  * Yield the processor.
  * Return the thread, or NULL on error.
  */
-empth_t *empth_create(int prio, void (*entry)(void *),
+empth_t *empth_create(void (*entry)(void *),
                      int size, int flags, char *name, void *ud);
 
 /*
@@ -167,6 +149,8 @@ void empth_yield(void);
  * if it executed empth_exit().  It is unspecified when exactly that
  * happens.
  * THREAD must not be the current thread.
+ * Naive use of this function almost always leads to resource leaks.
+ * Terminating a thread that may hold locks is not a good idea.
  */
 void empth_terminate(empth_t *thread);
 
@@ -199,33 +183,6 @@ int empth_sleep(time_t until);
  */
 int empth_wait_for_signal(void);
 
-/*
- * Create a semaphore.
- * NAME is its name, it is used for debugging.
- * COUNT is the initial count value of the semaphore, it must not be
- * negative.
- * Return the semaphore, or NULL on error.
- */
-empth_sem_t *empth_sem_create(char *name, int count);
-
-/*
- * Signal SEM.
- * Increase SEM's count.  If threads are sleeping on it, wake up
- * exactly one of them.  If that thread has a higher priority, yield
- * the processor.
- * This semaphore operation is often called `down' or `V' otherwhere.
- */
-void empth_sem_signal(empth_sem_t *sem);
-
-/*
- * Wait for SEM.
- * If SEM has a zero count, put current thread to sleep until
- * empth_sem_signal() awakens it.  SEM will have non-zero value then.
- * Decrement SEM's count.
- * This semaphore operation is often called `up' or `P' otherwhere.
- */
-void empth_sem_wait(empth_sem_t *sem);
-
 /*
  * Create a read-write lock.
  * NAME is its name, it is used for debugging.