Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/uipc_sockbuf.c
Show First 20 Lines • Show All 430 Lines • ▼ Show 20 Lines | |||||
socantrcvmore(struct socket *so) | socantrcvmore(struct socket *so) | ||||
{ | { | ||||
SOCKBUF_LOCK(&so->so_rcv); | SOCKBUF_LOCK(&so->so_rcv); | ||||
socantrcvmore_locked(so); | socantrcvmore_locked(so); | ||||
mtx_assert(SOCKBUF_MTX(&so->so_rcv), MA_NOTOWNED); | mtx_assert(SOCKBUF_MTX(&so->so_rcv), MA_NOTOWNED); | ||||
} | } | ||||
void | |||||
soroverflow_locked(struct socket *so) | |||||
{ | |||||
SOCKBUF_LOCK_ASSERT(&so->so_rcv); | |||||
if (so->so_options & SO_RERROR) { | |||||
so->so_rerror = ENOBUFS; | |||||
sorwakeup_locked(so); | |||||
} else | |||||
SOCKBUF_UNLOCK(&so->so_rcv); | |||||
mtx_assert(SOCKBUF_MTX(&so->so_rcv), MA_NOTOWNED); | |||||
} | |||||
void | |||||
soroverflow(struct socket *so) | |||||
{ | |||||
SOCKBUF_LOCK(&so->so_rcv); | |||||
soroverflow_locked(so); | |||||
mtx_assert(SOCKBUF_MTX(&so->so_rcv), MA_NOTOWNED); | |||||
} | |||||
/* | /* | ||||
* Wait for data to arrive at/drain from a socket buffer. | * Wait for data to arrive at/drain from a socket buffer. | ||||
*/ | */ | ||||
int | int | ||||
sbwait(struct sockbuf *sb) | sbwait(struct sockbuf *sb) | ||||
{ | { | ||||
SOCKBUF_LOCK_ASSERT(sb); | SOCKBUF_LOCK_ASSERT(sb); | ||||
▲ Show 20 Lines • Show All 1,349 Lines • Show Last 20 Lines |