*** empty log message ***
[arla.git] / lwp / q.c
blob3c6392803313bd6892a318e3bddd9c0e2879d36d
1 /*
2 * Emulate the vax instructions for queue insertion and deletion, somewhat.
3 * A std_queue structure is defined here and used by these routines. These
4 * routines use caddr_ts so they can operate on any structure. The std_queue
5 * structure is used rather than proc structures so that when the proc struct
6 * changes only process management code breaks. The ideal solution would be
7 * to define a std_queue as a global type which is part of all the structures
8 * which are manipulated by these routines. This would involve considerable
9 * effort...
12 #ifdef HAVE_CONFIG_H
13 #include <config.h>
14 RCSID("$Id$") ;
15 #endif
17 #include <stdio.h>
18 #include <sys/types.h>
19 #include <sys/time.h>
20 #ifdef HAVE_SYS_CDEFS_H
21 #include <sys/cdefs.h>
22 #endif
23 #include <utime.h>
25 #include "q.h"
27 /* Ansified, made more readable, and mayby fixed /lha */
29 struct std_queue {
30 struct std_queue *q_link;
31 struct std_queue *q_rlink;
32 } ;
34 void lwp_insque(void *elementp, void *quep)
36 struct std_queue *que = (struct std_queue *) quep ;
37 struct std_queue *element = (struct std_queue *) elementp ;
39 element->q_link = que->q_link;
40 element->q_rlink = que;
42 que->q_link->q_rlink = element;
43 que->q_link = element;
46 void lwp_remque(void *elementp)
48 struct std_queue *element = (struct std_queue *) elementp ;
50 element->q_link->q_rlink = element->q_rlink;
51 element->q_rlink->q_link = element->q_link;
53 element->q_rlink = element->q_link = (struct std_queue *) 0;