Lines Matching refs:buf

25 rb_update_local_start(struct rb_buffer *buf)
27 assert(buf && buf->dataspace);
28 if (buf->mode == RB_WRITEONLY) {
31 ((char*) &buf->localStart), sizeof(uint32_t), buf->dataspace, 0
33 } else if (buf->mode == RB_READONLY) {
36 ((char*) &buf->localStart), sizeof(uint32_t), buf->dataspace, 0
44 rb_update_local_end(struct rb_buffer *buf)
46 assert(buf && buf->dataspace);
47 if (buf->mode == RB_WRITEONLY) {
50 ((char*) &buf->localEnd), sizeof(uint32_t), buf->dataspace, sizeof(uint32_t)
52 } else if (buf->mode == RB_READONLY) {
55 ((char*) &buf->localEnd), sizeof(uint32_t), buf->dataspace, sizeof(uint32_t)
63 rb_remaining_size(struct rb_buffer *buf)
65 return buf->localStart > buf->localEnd ?
66 ((buf->localStart - buf->localEnd) - 1) :
67 ((buf->size - 1) - (buf->localEnd - buf->localStart));
108 rb_write(struct rb_buffer *buf, char *str, size_t len)
111 assert(buf && buf->magic == RINGBUFFER_MAGIC);
113 if (buf->mode != RB_WRITEONLY) {
118 if (len > rb_remaining_size(buf)) {
121 error = rb_update_local_start(buf);
126 if (len > rb_remaining_size(buf)) {
132 if (buf->localEnd < buf->localStart) {
138 error = ram_dspace_write(str, len, buf->dataspace,
139 buf->localEnd + RINGBUFFER_METADATA_SIZE);
150 uint32_t endBytes = MIN(len, buf->size - buf->localEnd);
151 error = ram_dspace_write(str, endBytes, buf->dataspace,
152 buf->localEnd + RINGBUFFER_METADATA_SIZE);
165 error = ram_dspace_write(str + endBytes, len - endBytes, buf->dataspace,
175 buf->localEnd = (buf->localEnd + len) % buf->size;
176 error = rb_update_local_end(buf);
186 rb_read(struct rb_buffer *buf, char *dest, size_t len, size_t *bytesRead)
189 assert(buf && buf->magic == RINGBUFFER_MAGIC);
191 if (buf->mode != RB_READONLY) {
196 size_t contentSize = (buf->size - 1) - rb_remaining_size(buf);
200 error = rb_update_local_end(buf);
207 if (buf->localStart <= buf->localEnd) {
213 *bytesRead = MIN(buf->localEnd - buf->localStart, len);
214 error = ram_dspace_read(dest, *bytesRead, buf->dataspace,
215 buf->localStart + RINGBUFFER_METADATA_SIZE);
226 *bytesRead = MIN(buf->size - buf->localStart, len);
227 error = ram_dspace_read(dest, *bytesRead, buf->dataspace,
228 buf->localStart + RINGBUFFER_METADATA_SIZE);
233 unsigned int bytesRemain = MIN(len - *bytesRead, buf->localEnd);
241 error = ram_dspace_read(dest + *bytesRead, bytesRemain, buf->dataspace,
252 buf->localEnd = (buf->localEnd + len) % buf->size;
253 buf->localStart = (buf->localStart + *bytesRead) % buf->size;
254 error = rb_update_local_start(buf);