Lines Matching defs:mb

65 static void memio_buffer_new(struct memio_buffer *mb, int size);
68 static void memio_buffer_destroy(struct memio_buffer *mb);
71 static int memio_buffer_used_contiguous(const struct memio_buffer *mb);
74 static int memio_buffer_wrapped_bytes(const struct memio_buffer *mb);
77 static int memio_buffer_unused_contiguous(const struct memio_buffer *mb);
80 static int memio_buffer_put(struct memio_buffer *mb, const char *buf, int n);
83 static int memio_buffer_get(struct memio_buffer *mb, char *buf, int n);
86 static void memio_buffer_new(struct memio_buffer *mb, int size)
88 mb->head = 0;
89 mb->tail = 0;
90 mb->bufsize = size;
91 mb->buf = malloc(size);
95 static void memio_buffer_destroy(struct memio_buffer *mb)
97 free(mb->buf);
98 mb->buf = NULL;
99 mb->head = 0;
100 mb->tail = 0;
104 static int memio_buffer_used_contiguous(const struct memio_buffer *mb)
106 return (((mb->tail >= mb->head) ? mb->tail : mb->bufsize) - mb->head);
110 static int memio_buffer_wrapped_bytes(const struct memio_buffer *mb)
112 return (mb->tail >= mb->head) ? 0 : mb->tail;
116 static int memio_buffer_unused_contiguous(const struct memio_buffer *mb)
118 if (mb->head > mb->tail) return mb->head - mb->tail - 1;
119 return mb->bufsize - mb->tail - (mb->head == 0);
123 static int memio_buffer_put(struct memio_buffer *mb, const char *buf, int n)
129 len = PR_MIN(n, memio_buffer_unused_contiguous(mb));
132 memcpy(&mb->buf[mb->tail], buf, len);
133 mb->tail += len;
134 if (mb->tail == mb->bufsize)
135 mb->tail = 0;
141 len = PR_MIN(n, memio_buffer_unused_contiguous(mb));
144 memcpy(&mb->buf[mb->tail], buf, len);
145 mb->tail += len;
146 if (mb->tail == mb->bufsize)
147 mb->tail = 0;
157 static int memio_buffer_get(struct memio_buffer *mb, char *buf, int n)
163 len = PR_MIN(n, memio_buffer_used_contiguous(mb));
165 memcpy(buf, &mb->buf[mb->head], len);
166 mb->head += len;
167 if (mb->head == mb->bufsize)
168 mb->head = 0;
174 len = PR_MIN(n, memio_buffer_used_contiguous(mb));
176 memcpy(buf, &mb->buf[mb->head], len);
177 mb->head += len;
178 if (mb->head == mb->bufsize)
179 mb->head = 0;
213 struct memio_buffer *mb;
222 mb = &secret->readbuf;
223 PR_ASSERT(mb->bufsize);
224 rv = memio_buffer_get(mb, buf, len);
226 if (mb->last_err)
227 PR_SetError(mb->last_err, 0);
246 struct memio_buffer *mb;
250 mb = &secret->writebuf;
251 PR_ASSERT(mb->bufsize);
253 if (mb->last_err) {
254 PR_SetError(mb->last_err, 0);
257 rv = memio_buffer_put(mb, buf, len);
387 struct memio_buffer* mb = &((PRFilePrivate *)secret)->readbuf;
388 PR_ASSERT(mb->bufsize);
390 *buf = &mb->buf[mb->tail];
391 return memio_buffer_unused_contiguous(mb);
396 struct memio_buffer* mb = &((PRFilePrivate *)secret)->readbuf;
397 PR_ASSERT(mb->bufsize);
400 mb->tail += bytes_read;
401 if (mb->tail == mb->bufsize)
402 mb->tail = 0;
407 mb->last_err = bytes_read;
415 struct memio_buffer* mb = &((PRFilePrivate *)secret)->writebuf;
416 PR_ASSERT(mb->bufsize);
418 *buf1 = &mb->buf[mb->head];
419 *len1 = memio_buffer_used_contiguous(mb);
420 *buf2 = mb->buf;
421 *len2 = memio_buffer_wrapped_bytes(mb);
426 struct memio_buffer* mb = &((PRFilePrivate *)secret)->writebuf;
427 PR_ASSERT(mb->bufsize);
430 mb->head += bytes_written;
431 if (mb->head >= mb->bufsize)
432 mb->head -= mb->bufsize;
434 mb->last_err = bytes_written;
456 struct memio_buffer mb;
460 memio_buffer_new(&mb, TEST_BUFLEN);
462 CHECKEQ(memio_buffer_unused_contiguous(&mb), TEST_BUFLEN-1);
463 CHECKEQ(memio_buffer_used_contiguous(&mb), 0);
465 CHECKEQ(memio_buffer_put(&mb, "howdy", 5), 5);
467 CHECKEQ(memio_buffer_unused_contiguous(&mb), TEST_BUFLEN-1-5);
468 CHECKEQ(memio_buffer_used_contiguous(&mb), 5);
469 CHECKEQ(memio_buffer_wrapped_bytes(&mb), 0);
471 CHECKEQ(memio_buffer_put(&mb, "!", 1), 1);
473 CHECKEQ(memio_buffer_unused_contiguous(&mb), 0);
474 CHECKEQ(memio_buffer_used_contiguous(&mb), 6);
475 CHECKEQ(memio_buffer_wrapped_bytes(&mb), 0);
477 CHECKEQ(memio_buffer_get(&mb, buf, 6), 6);
480 CHECKEQ(memio_buffer_unused_contiguous(&mb), 1);
481 CHECKEQ(memio_buffer_used_contiguous(&mb), 0);
483 CHECKEQ(memio_buffer_put(&mb, "01234", 5), 5);
485 CHECKEQ(memio_buffer_used_contiguous(&mb), 1);
486 CHECKEQ(memio_buffer_wrapped_bytes(&mb), 4);
487 CHECKEQ(memio_buffer_unused_contiguous(&mb), TEST_BUFLEN-1-5);
489 CHECKEQ(memio_buffer_put(&mb, "5", 1), 1);
491 CHECKEQ(memio_buffer_unused_contiguous(&mb), 0);
492 CHECKEQ(memio_buffer_used_contiguous(&mb), 1);