1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /* $Id$ */
- /*
- * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
- * See the copyright notice in the ACK home directory, in the file "Copyright".
- */
- #include "top.h"
- #include "queue.h"
- empty_queue(q)
- register queue q;
- {
- q->head = q->tail = (instr_p) 0;
- q->qlen = 0;
- }
- int empty(q)
- queue q;
- {
- return q->qlen == 0;
- }
- remove_head(q)
- register queue q;
- {
- if ( (q->head = q->head->fw) == (instr_p) 0) {
- q->tail = (instr_p) 0;
- } else {
- q->head->bw = (instr_p) 0;
- }
- q->qlen--;
- }
- add(q,instr)
- register queue q;
- register instr_p instr;
- {
- if (q->qlen++ == 0) {
- q->head = q->tail = instr;
- instr->bw = (instr_p) 0;
- } else {
- q->tail->fw = instr;
- instr->bw = q->tail;
- q->tail = instr;
- }
- instr->fw = (instr_p) 0;
- }
- insert(q,instr)
- register queue q;
- register instr_p instr;
- {
- if (q->qlen++ == 0) {
- q->head = q->tail = instr;
- instr->fw = (instr_p) 0;
- } else {
- q->head->bw = instr;
- instr->fw = q->head;
- q->head = instr;
- }
- instr->bw = (instr_p) 0;
- }
- join_queues(q1,q2)
- register queue q1,q2;
- {
- if (q1->qlen > 0) {
- q2->qlen += q1->qlen;
- q1->tail->fw = q2->head;
- if (q2->qlen > 0) {
- q2->head->bw = q1->tail;
- } else {
- q2->tail = q1->tail;
- }
- q2->head = q1->head;
- empty_queue(q1);
- }
- }
|