X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/blobdiff_plain/f3dcefea4999dd3bbd2f735115ae125ebc0df740..acd31a69ea41698798c8dcc03369dd7c70e4741e:/sys/kern/uipc_msg.c diff --git a/sys/kern/uipc_msg.c b/sys/kern/uipc_msg.c index ea7c3bb843..9cd1e3a0e6 100644 --- a/sys/kern/uipc_msg.c +++ b/sys/kern/uipc_msg.c @@ -231,6 +231,19 @@ so_pru_detach(struct socket *so) return (error); } +void +so_pru_detach_direct(struct socket *so) +{ + struct netmsg_pru_detach msg; + netisr_fn_t func = so->so_proto->pr_usrreqs->pru_detach; + + netmsg_init(&msg.base, so, &netisr_adone_rport, 0, func); + msg.base.lmsg.ms_flags &= ~(MSGF_REPLY | MSGF_DONE); + msg.base.lmsg.ms_flags |= MSGF_SYNC; + func((netmsg_t)&msg); + KKASSERT(msg.base.lmsg.ms_flags & MSGF_DONE); +} + int so_pru_disconnect(struct socket *so) { @@ -243,6 +256,19 @@ so_pru_disconnect(struct socket *so) return (error); } +void +so_pru_disconnect_direct(struct socket *so) +{ + struct netmsg_pru_disconnect msg; + netisr_fn_t func = so->so_proto->pr_usrreqs->pru_disconnect; + + netmsg_init(&msg.base, so, &netisr_adone_rport, 0, func); + msg.base.lmsg.ms_flags &= ~(MSGF_REPLY | MSGF_DONE); + msg.base.lmsg.ms_flags |= MSGF_SYNC; + func((netmsg_t)&msg); + KKASSERT(msg.base.lmsg.ms_flags & MSGF_DONE); +} + int so_pru_listen(struct socket *so, struct thread *td) {