]> git.pond.sub.org Git - empserver/blobdiff - include/lwp.h
Include <sys/time.h> in lwp.h
[empserver] / include / lwp.h
index dbb2533154ad4257b85d725ddc181692491a485a..2d2c8dea1398cec9013ce22f7855e7ad8b2ea381 100644 (file)
@@ -1,21 +1,38 @@
 /*
- * lwp.h -- prototypes and structures for lightweight processes
- * Copyright (C) 1991-3 Stephen Crane.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- * 
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *  Empire - A multi-player, client/server Internet based war game.
+ *  Copyright (C) 1994-2013, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *                Ken Stevens, Steve McClure, Markus Armbruster
+ *  Copyright (C) 1991-3 Stephen Crane
  *
+ *  Empire is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  ---
+ *
+ *  See files README, COPYING and CREDITS in the root of the source
+ *  tree for related information and legal notices.  It is expected
+ *  that future projects/authors will amend these files as needed.
+ *
+ *  ---
+ *
+ *  lwp.h -- prototypes and structures for lightweight processes
+ *
+ *  Known contributors to this file:
+ *     Markus Armbruster, 2004-2010
+ *     Ron Koenderink, 2007-2009
+ */
+
+/*
  * author: Stephen Crane, (jsc@doc.ic.ac.uk), Department of Computing,
  * Imperial College of Science, Technology and Medicine, 180 Queen's
  * Gate, London SW7 2BZ, England.
 #ifndef LWP_H
 #define LWP_H
 
-#include "misc.h"
+#include <signal.h>
+#include <sys/time.h>
+#include <sys/types.h>
 
 #define LWP_STACKCHECK 0x1
 #define LWP_PRINT      0x2
 
 struct lwpProc;
-struct lwpSem;
+struct lwp_rwlock;
 
 #define LWP_FD_READ    0x1
 #define LWP_FD_WRITE   0x2
 
 #define LWP_MAX_PRIO   8
 
-struct lwpProc *lwpInitSystem(int prio, char **ctxp, int flags);
+struct lwpProc *lwpInitSystem(int prio, void **ctxp, int flags, sigset_t *);
 struct lwpProc *lwpCreate(int prio, void (*)(void *), int size,
-                         int flags, char *name, char *desc,
+                         int flags, char *name,
                          int argc, char **argv, void *ud);
 void lwpExit(void);
-void lwpTerminate(struct lwpProc * p);
+void lwpTerminate(struct lwpProc *);
 void lwpYield(void);
-void lwpSleepFd(int fd, int flags);
-void lwpSleepUntil(long until);
-void lwpWakeupFd(struct lwpProc * p);
+int lwpSleepFd(int fd, int flags, struct timeval *timeout);
+int lwpSleepUntil(time_t until);
+void lwpWakeup(struct lwpProc *);
 int lwpSigWait(sigset_t *set, int *sig);
-void *lwpGetUD(struct lwpProc * p);
-void lwpSetUD(struct lwpProc * p, char *ud);
-void lwpSetDesc(struct lwpProc * p, char *name, char *desc);
+void *lwpGetUD(struct lwpProc *);
+void lwpSetUD(struct lwpProc *, char *ud);
 int lwpSetPriority(int prio);
+char *lwpName(struct lwpProc *);
+void lwpSetName(struct lwpProc *, char *name);
 
-struct lwpSem *lwpCreateSem(char *name, int count);
-void lwpSignal(struct lwpSem *);
-void lwpWait(struct lwpSem *);
+struct lwp_rwlock *lwp_rwlock_create(char *);
+void lwp_rwlock_destroy(struct lwp_rwlock *);
+void lwp_rwlock_wrlock(struct lwp_rwlock *);
+void lwp_rwlock_rdlock(struct lwp_rwlock *);
+void lwp_rwlock_unlock(struct lwp_rwlock *);
 
 extern struct lwpProc *LwpCurrent;