Lines Matching full:fifo

120 #define fifo_for_each(c, fifo, iter)					\  argument
121 for (iter = (fifo)->front; \
122 c = (fifo)->data[iter], iter != (fifo)->back; \
123 iter = (iter + 1) & (fifo)->mask)
125 #define __init_fifo(fifo, gfp) \ argument
128 BUG_ON(!(fifo)->size); \
130 _allocated_size = roundup_pow_of_two((fifo)->size + 1); \
131 _bytes = _allocated_size * sizeof(*(fifo)->data); \
133 (fifo)->mask = _allocated_size - 1; \
134 (fifo)->front = (fifo)->back = 0; \
136 (fifo)->data = kvmalloc(_bytes, (gfp) & GFP_KERNEL); \
137 (fifo)->data; \
140 #define init_fifo_exact(fifo, _size, gfp) \ argument
142 (fifo)->size = (_size); \
143 __init_fifo(fifo, gfp); \
146 #define init_fifo(fifo, _size, gfp) \ argument
148 (fifo)->size = (_size); \
149 if ((fifo)->size > 4) \
150 (fifo)->size = roundup_pow_of_two((fifo)->size) - 1; \
151 __init_fifo(fifo, gfp); \
154 #define free_fifo(fifo) \ argument
156 kvfree((fifo)->data); \
157 (fifo)->data = NULL; \
160 #define fifo_used(fifo) (((fifo)->back - (fifo)->front) & (fifo)->mask) argument
161 #define fifo_free(fifo) ((fifo)->size - fifo_used(fifo)) argument
163 #define fifo_empty(fifo) (!fifo_used(fifo)) argument
164 #define fifo_full(fifo) (!fifo_free(fifo)) argument
166 #define fifo_front(fifo) ((fifo)->data[(fifo)->front]) argument
167 #define fifo_back(fifo) \ argument
168 ((fifo)->data[((fifo)->back - 1) & (fifo)->mask])
170 #define fifo_idx(fifo, p) (((p) - &fifo_front(fifo)) & (fifo)->mask) argument
172 #define fifo_push_back(fifo, i) \ argument
174 bool _r = !fifo_full((fifo)); \
176 (fifo)->data[(fifo)->back++] = (i); \
177 (fifo)->back &= (fifo)->mask; \
182 #define fifo_pop_front(fifo, i) \ argument
184 bool _r = !fifo_empty((fifo)); \
186 (i) = (fifo)->data[(fifo)->front++]; \
187 (fifo)->front &= (fifo)->mask; \
192 #define fifo_push_front(fifo, i) \ argument
194 bool _r = !fifo_full((fifo)); \
196 --(fifo)->front; \
197 (fifo)->front &= (fifo)->mask; \
198 (fifo)->data[(fifo)->front] = (i); \
203 #define fifo_pop_back(fifo, i) \ argument
205 bool _r = !fifo_empty((fifo)); \
207 --(fifo)->back; \
208 (fifo)->back &= (fifo)->mask; \
209 (i) = (fifo)->data[(fifo)->back] \
214 #define fifo_push(fifo, i) fifo_push_back(fifo, (i)) argument
215 #define fifo_pop(fifo, i) fifo_pop_front(fifo, (i)) argument