Lines Matching +full:data +full:- +full:size
1 // SPDX-License-Identifier: GPL-2.0+
13 int buf_init (circbuf_t * buf, unsigned int size) in buf_init() argument
17 buf->size = 0; in buf_init()
18 buf->totalsize = size; in buf_init()
19 buf->data = (char *) malloc (sizeof (char) * size); in buf_init()
20 assert (buf->data != NULL); in buf_init()
22 buf->top = buf->data; in buf_init()
23 buf->tail = buf->data; in buf_init()
24 buf->end = &(buf->data[size]); in buf_init()
32 assert (buf->data != NULL); in buf_free()
34 free (buf->data); in buf_free()
48 p = buf->top; in buf_pop()
51 if (len > buf->size) in buf_pop()
52 len = buf->size; in buf_pop()
57 if (p == buf->end) { in buf_pop()
58 p = buf->data; in buf_pop()
63 buf->top = p; in buf_pop()
64 buf->size -= len; in buf_pop()
71 /* NOTE: this function allows push to overwrite old data. */ in buf_push()
78 p = buf->tail; in buf_push()
82 if (p == buf->end) { in buf_push()
83 p = buf->data; in buf_push()
85 /* Make sure pushing too much data just replaces old data */ in buf_push()
86 if (buf->size < buf->totalsize) { in buf_push()
87 buf->size++; in buf_push()
89 buf->top++; in buf_push()
90 if (buf->top == buf->end) { in buf_push()
91 buf->top = buf->data; in buf_push()
97 buf->tail = p; in buf_push()