MCPcopy Create free account
hub / github.com/F-Stack/f-stack / sbuf_bcopyin

Function sbuf_bcopyin

freebsd/kern/subr_sbuf.c:495–518  ·  view source on GitHub ↗

* Copy a byte string from userland into an sbuf. */

Source from the content-addressed store, hash-verified

493 * Copy a byte string from userland into an sbuf.
494 */
495int
496sbuf_bcopyin(struct sbuf *s, const void *uaddr, size_t len)
497{
498
499 assert_sbuf_integrity(s);
500 assert_sbuf_state(s, 0);
501 KASSERT(s->s_drain_func == NULL,
502 ("Nonsensical copyin to sbuf %p with a drain", s));
503
504 if (s->s_error != 0)
505 return (-1);
506 if (len == 0)
507 return (0);
508 if (len > SBUF_FREESPACE(s)) {
509 sbuf_extend(s, len - SBUF_FREESPACE(s));
510 if (SBUF_FREESPACE(s) < len)
511 len = SBUF_FREESPACE(s);
512 }
513 if (copyin(uaddr, s->s_buf + s->s_len, len) != 0)
514 return (-1);
515 s->s_len += len;
516
517 return (0);
518}
519#endif
520
521/*

Callers

nothing calls this directly

Calls 2

sbuf_extendFunction · 0.85
copyinFunction · 0.50

Tested by

no test coverage detected