Lines Matching refs:fifo
239 struct fifo { struct
247 static inline void fifo_init(struct fifo *fifo, int size) in fifo_init() argument
249 fifo->r = fifo->w = fifo->count = 0; in fifo_init()
250 fifo->size = size; in fifo_init()
251 spin_lock_init(&fifo->lock); in fifo_init()
257 static inline int fifo_add(struct fifo *fifo) in fifo_add() argument
262 if (!fifo) { in fifo_add()
266 spin_lock_irqsave(&fifo->lock, flags); in fifo_add()
267 if (fifo->count == fifo->size) { in fifo_add()
272 index = fifo->w++ & (fifo->size - 1); in fifo_add()
273 fifo->count++; in fifo_add()
275 spin_unlock_irqrestore(&fifo->lock, flags); in fifo_add()
282 static inline int fifo_remove(struct fifo *fifo) in fifo_remove() argument
287 if (!fifo) { in fifo_remove()
291 spin_lock_irqsave(&fifo->lock, flags); in fifo_remove()
292 if (!fifo->count) { in fifo_remove()
297 index = fifo->r++ & (fifo->size - 1); in fifo_remove()
298 fifo->count--; in fifo_remove()
300 spin_unlock_irqrestore(&fifo->lock, flags); in fifo_remove()
319 struct fifo f;