2 * lwp.h -- prototypes and structures for lightweight processes
3 * Copyright (C) 1991-3 Stephen Crane.
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details.
15 * You should have received a copy of the GNU Library General Public
16 * License along with this library; if not, write to the Free
17 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 * author: Stephen Crane, (jsc@doc.ic.ac.uk), Department of Computing,
20 * Imperial College of Science, Technology and Medicine, 180 Queen's
21 * Gate, London SW7 2BZ, England.
37 /* process control block. do *not* change the position of context */
39 jmp_buf context; /* processor context area */
40 void *sbtm; /* bottom of stack attached to it */
41 int size; /* size of stack */
42 void (*entry) (); /* entry point */
43 int dead; /* whether the process can be rescheduled */
44 int pri; /* which scheduling queue we're on */
45 long runtime; /* time at which process is restarted */
46 int fd; /* fd we're blocking on */
47 int argc; /* initial arguments */
49 void *ud; /* user data */
65 #define LWP_FD_READ 0x1
66 #define LWP_FD_WRITE 0x2
68 #define LWP_MAX_PRIO 8
70 struct lwpProc *lwpInitSystem _PROTO((int));
71 struct lwpProc *lwpCreate
72 _PROTO((int, void (*)(), int, int, char **, void *));
73 void lwpExit _PROTO((void));
74 void lwpTerminate _PROTO((struct lwpProc *));
75 void lwpYield _PROTO((void));
76 void lwpSleepFd _PROTO((int fd, int flags));
77 void lwpSleepUntil _PROTO((long until));
78 void lwpWakeupFd _PROTO((struct lwpProc *));
79 void *lwpGetUD _PROTO((struct lwpProc *));
80 void lwpSetUD _PROTO((struct lwpProc *, char *));
81 int lwpSetPriority _PROTO((int));
82 void lwpReschedule _PROTO(());
84 struct lwpSem *lwpCreateSem _PROTO((int));
85 void lwpSignal _PROTO((struct lwpSem *));
86 void lwpWait _PROTO((struct lwpSem *));
87 void lwpSelect _PROTO((int argc, char **argv));
89 extern struct lwpProc *LwpCurrent;