Lines Matching refs:fifo
28 struct fifo *fifo_alloc(unsigned int size) in fifo_alloc()
30 struct fifo *fifo; in fifo_alloc() local
32 fifo = malloc(sizeof(struct fifo)); in fifo_alloc()
33 if (!fifo) in fifo_alloc()
36 fifo->buffer = malloc(size); in fifo_alloc()
37 fifo->size = size; in fifo_alloc()
38 fifo->in = fifo->out = 0; in fifo_alloc()
40 return fifo; in fifo_alloc()
43 void fifo_free(struct fifo *fifo) in fifo_free() argument
45 free(fifo->buffer); in fifo_free()
46 free(fifo); in fifo_free()
49 unsigned int fifo_put(struct fifo *fifo, void *buffer, unsigned int len) in fifo_put() argument
53 len = min(len, fifo_room(fifo)); in fifo_put()
56 l = min(len, fifo->size - (fifo->in & (fifo->size - 1))); in fifo_put()
57 memcpy(fifo->buffer + (fifo->in & (fifo->size - 1)), buffer, l); in fifo_put()
60 memcpy(fifo->buffer, buffer + l, len - l); in fifo_put()
67 fifo->in += len; in fifo_put()
72 unsigned int fifo_get(struct fifo *fifo, void *buf, unsigned int len) in fifo_get() argument
74 len = min(len, fifo->in - fifo->out); in fifo_get()
82 l = min(len, fifo->size - (fifo->out & (fifo->size - 1))); in fifo_get()
83 memcpy(buf, fifo->buffer + (fifo->out & (fifo->size - 1)), l); in fifo_get()
88 memcpy(buf + l, fifo->buffer, len - l); in fifo_get()
91 fifo->out += len; in fifo_get()
93 if (fifo->in == fifo->out) in fifo_get()
94 fifo->in = fifo->out = 0; in fifo_get()