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
18 #include <sys/types.h>
20 #ifdef HAVE_SYS_CDEFS_H
21 #include <sys/cdefs.h>
27 /* Ansified, made more readable, and mayby fixed /lha */
30 struct std_queue
*q_link
;
31 struct std_queue
*q_rlink
;
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;