Lines Matching refs:fifo

126 #define fifo_for_each(c, fifo, iter)					\  argument
127 for (iter = (fifo)->front; \
128 c = (fifo)->data[iter], iter != (fifo)->back; \
129 iter = (iter + 1) & (fifo)->mask)
131 #define __init_fifo(fifo, gfp) \ argument
134 BUG_ON(!(fifo)->size); \
136 _allocated_size = roundup_pow_of_two((fifo)->size + 1); \
137 _bytes = _allocated_size * sizeof(*(fifo)->data); \
139 (fifo)->mask = _allocated_size - 1; \
140 (fifo)->front = (fifo)->back = 0; \
141 (fifo)->data = NULL; \
144 (fifo)->data = kmalloc(_bytes, (gfp)); \
145 if ((!(fifo)->data) && ((gfp) & GFP_KERNEL)) \
146 (fifo)->data = vmalloc(_bytes); \
147 (fifo)->data; \
150 #define init_fifo_exact(fifo, _size, gfp) \ argument
152 (fifo)->size = (_size); \
153 __init_fifo(fifo, gfp); \
156 #define init_fifo(fifo, _size, gfp) \ argument
158 (fifo)->size = (_size); \
159 if ((fifo)->size > 4) \
160 (fifo)->size = roundup_pow_of_two((fifo)->size) - 1; \
161 __init_fifo(fifo, gfp); \
164 #define free_fifo(fifo) \ argument
166 if (is_vmalloc_addr((fifo)->data)) \
167 vfree((fifo)->data); \
169 kfree((fifo)->data); \
170 (fifo)->data = NULL; \
173 #define fifo_used(fifo) (((fifo)->back - (fifo)->front) & (fifo)->mask) argument
174 #define fifo_free(fifo) ((fifo)->size - fifo_used(fifo)) argument
176 #define fifo_empty(fifo) (!fifo_used(fifo)) argument
177 #define fifo_full(fifo) (!fifo_free(fifo)) argument
179 #define fifo_front(fifo) ((fifo)->data[(fifo)->front]) argument
180 #define fifo_back(fifo) \ argument
181 ((fifo)->data[((fifo)->back - 1) & (fifo)->mask])
183 #define fifo_idx(fifo, p) (((p) - &fifo_front(fifo)) & (fifo)->mask) argument
185 #define fifo_push_back(fifo, i) \ argument
187 bool _r = !fifo_full((fifo)); \
189 (fifo)->data[(fifo)->back++] = (i); \
190 (fifo)->back &= (fifo)->mask; \
195 #define fifo_pop_front(fifo, i) \ argument
197 bool _r = !fifo_empty((fifo)); \
199 (i) = (fifo)->data[(fifo)->front++]; \
200 (fifo)->front &= (fifo)->mask; \
205 #define fifo_push_front(fifo, i) \ argument
207 bool _r = !fifo_full((fifo)); \
209 --(fifo)->front; \
210 (fifo)->front &= (fifo)->mask; \
211 (fifo)->data[(fifo)->front] = (i); \
216 #define fifo_pop_back(fifo, i) \ argument
218 bool _r = !fifo_empty((fifo)); \
220 --(fifo)->back; \
221 (fifo)->back &= (fifo)->mask; \
222 (i) = (fifo)->data[(fifo)->back] \
227 #define fifo_push(fifo, i) fifo_push_back(fifo, (i)) argument
228 #define fifo_pop(fifo, i) fifo_pop_front(fifo, (i)) argument