1 /*
2 * include/asm-s390/queue.h
3 *
4 * S390 version
5 * Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
6 * Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
7 *
8 * A little set of queue utilies.
9 */
10 #include <linux/stddef.h>
11 #include <asm/types.h>
12
13 typedef struct queue
14 {
15 struct queue *next;
16 } queue;
17
18 typedef queue list;
19
20 typedef struct
21 {
22 queue *head;
23 queue *tail;
24 } qheader;
25
26 static __inline__ void init_queue(qheader *qhead)
27 {
28 memset(qhead,0,sizeof(*qhead));
29 }
30
31 static __inline__ void enqueue_tail(qheader *qhead,queue *member)
32 {
33 queue *tail=qhead->tail;
34 member->next=NULL;
35
36 if(member)
37 {
38 if(tail)
39 tail->next=member;
40 else
41
42 qhead->head=member;
43 qhead->tail=member;
44 member->next=NULL;
45 }
46 }
47
48 static __inline__ queue *dequeue_head(qheader *qhead)
49 {
50 queue *head=qhead->head,*next_head;
51
52 if(head)
53 {
54 next_head=head->next;
55 qhead->head=next_head;
56 if(!next_head)
57 qhead->tail=NULL;
58 }
59 return(head);
60 }
61
62 static __inline__ void init_list(list **lhead)
63 {
64 *lhead=NULL;
65 }
66
67 static __inline__ void add_to_list(list **lhead,list *member)
68 {
69 member->next=*lhead;
70 *lhead=member;
71 }
72
73 static __inline__ int is_in_list(list *lhead,list *member)
74 {
75 list *curr;
76
77 for(curr=lhead;curr!=NULL;curr=curr->next)
78 if(curr==member)
79 return(TRUE);
80 return(FALSE);
81 }
82
83 static __inline__ int get_prev(list *lhead,list *member,list **prev)
84 {
85 list *curr;
86
87 *prev=NULL;
88 for(curr=lhead;curr!=NULL;curr=curr->next)
89 {
90 if(curr==member)
91 return(TRUE);
92 *prev=curr;
93 }
94 *prev=NULL;
95 return(FALSE);
96 }
97
98
99 static __inline__ int remove_from_list(list **lhead,list *member)
100 {
101 list *prev;
102
103 if(get_prev(*lhead,member,&prev))
104 {
105
106 if(prev)
107 prev->next=member->next;
108 else
109 *lhead=member->next;
110 return(TRUE);
111 }
112 return(FALSE);
113 }
114
115
116
117
118
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.