Lines Matching refs:gb
154 static int gs_buf_alloc(struct gs_buf *gb, unsigned size)
156 gb->buf_buf = kmalloc(size, GFP_KERNEL);
157 if (gb->buf_buf == NULL)
160 gb->buf_size = size;
161 gb->buf_put = gb->buf_buf;
162 gb->buf_get = gb->buf_buf;
172 static void gs_buf_free(struct gs_buf *gb)
174 kfree(gb->buf_buf);
175 gb->buf_buf = NULL;
183 static void gs_buf_clear(struct gs_buf *gb)
185 gb->buf_get = gb->buf_put;
195 static unsigned gs_buf_data_avail(struct gs_buf *gb)
197 return (gb->buf_size + gb->buf_put - gb->buf_get) % gb->buf_size;
206 static unsigned gs_buf_space_avail(struct gs_buf *gb)
208 return (gb->buf_size + gb->buf_get - gb->buf_put - 1) % gb->buf_size;
220 gs_buf_put(struct gs_buf *gb, const char *buf, unsigned count)
224 len = gs_buf_space_avail(gb);
231 len = gb->buf_buf + gb->buf_size - gb->buf_put;
233 memcpy(gb->buf_put, buf, len);
234 memcpy(gb->buf_buf, buf+len, count - len);
235 gb->buf_put = gb->buf_buf + count - len;
237 memcpy(gb->buf_put, buf, count);
239 gb->buf_put += count;
241 gb->buf_put = gb->buf_buf;
256 gs_buf_get(struct gs_buf *gb, char *buf, unsigned count)
260 len = gs_buf_data_avail(gb);
267 len = gb->buf_buf + gb->buf_size - gb->buf_get;
269 memcpy(buf, gb->buf_get, len);
270 memcpy(buf+len, gb->buf_buf, count - len);
271 gb->buf_get = gb->buf_buf + count - len;
273 memcpy(buf, gb->buf_get, count);
275 gb->buf_get += count;
277 gb->buf_get = gb->buf_buf;