~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/asm-s390/queue.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.