• Home
  • Raw
  • Download

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