/*
- * lwp.h -- prototypes and structures for lightweight processes
- * Copyright (C) 1991-3 Stephen Crane.
+ * Empire - A multi-player, client/server Internet based war game.
+ * Copyright (C) 1994-2021, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Ken Stevens, Steve McClure, Markus Armbruster
+ * 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 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-2020
+ * 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_
+#ifndef LWP_H
+#define LWP_H
-#include "misc.h"
+#include <sys/time.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, int[]);
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);
-void *lwpGetUD(struct lwpProc * p);
-void lwpSetUD(struct lwpProc * p, char *ud);
-void lwpSetDesc(struct lwpProc * p, char *name, char *desc);
+int lwpSleepFd(int fd, int flags, struct timeval *timeout);
+int lwpSleepUntil(time_t until);
+void lwpWakeup(struct lwpProc *);
+int lwpSigWait(void);
+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 *);
-void lwpSelect(void *);
-void lwpStatus(struct lwpProc *proc, char *format, ...)
- ATTRIBUTE((format (printf, 2, 3)));
+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;
-#endif /* _LWP_H_ */
+#endif