diff options
| author | Robert Watson <rwatson@FreeBSD.org> | 2004-06-26 19:10:39 +0000 |
|---|---|---|
| committer | Robert Watson <rwatson@FreeBSD.org> | 2004-06-26 19:10:39 +0000 |
| commit | 1e4d7da707ea9277eb623e87861e8fe1affe8936 (patch) | |
| tree | 0215a39aaab05d8f4180c75adc66451aa52aac5c /sys/kern | |
| parent | df68e345c5b240f5f39fa18d02484b411a55e1d3 (diff) | |
Notes
Diffstat (limited to 'sys/kern')
| -rw-r--r-- | sys/kern/uipc_sockbuf.c | 13 | ||||
| -rw-r--r-- | sys/kern/uipc_socket2.c | 13 | ||||
| -rw-r--r-- | sys/kern/uipc_usrreq.c | 9 |
3 files changed, 13 insertions, 22 deletions
diff --git a/sys/kern/uipc_sockbuf.c b/sys/kern/uipc_sockbuf.c index e366c3c89769..efcea0c4575f 100644 --- a/sys/kern/uipc_sockbuf.c +++ b/sys/kern/uipc_sockbuf.c @@ -169,13 +169,11 @@ soisdisconnecting(so) SOCK_UNLOCK(so); SOCKBUF_LOCK(&so->so_rcv); so->so_rcv.sb_state |= SBS_CANTRCVMORE; - SOCKBUF_UNLOCK(&so->so_rcv); + sorwakeup_locked(so); SOCKBUF_LOCK(&so->so_snd); so->so_snd.sb_state |= SBS_CANTSENDMORE; - SOCKBUF_UNLOCK(&so->so_snd); + sowwakeup_locked(so); wakeup(&so->so_timeo); - sowwakeup(so); - sorwakeup(so); } void @@ -188,20 +186,19 @@ soisdisconnected(so) * SOCKBUF_LOCK(&so->so_rcv) even though they are the same mutex to * avoid introducing the assumption that they are the same. */ + /* XXXRW: so_state locking? */ SOCK_LOCK(so); so->so_state &= ~(SS_ISCONNECTING|SS_ISCONNECTED|SS_ISDISCONNECTING); so->so_state |= SS_ISDISCONNECTED; SOCK_UNLOCK(so); SOCKBUF_LOCK(&so->so_rcv); so->so_rcv.sb_state |= SBS_CANTRCVMORE; - SOCKBUF_UNLOCK(&so->so_rcv); + sorwakeup_locked(so); SOCKBUF_LOCK(&so->so_snd); so->so_snd.sb_state |= SBS_CANTSENDMORE; sbdrop_locked(&so->so_snd, so->so_snd.sb_cc); - SOCKBUF_UNLOCK(&so->so_snd); + sowwakeup_locked(so); wakeup(&so->so_timeo); - sowwakeup(so); - sorwakeup(so); } /* diff --git a/sys/kern/uipc_socket2.c b/sys/kern/uipc_socket2.c index e366c3c89769..efcea0c4575f 100644 --- a/sys/kern/uipc_socket2.c +++ b/sys/kern/uipc_socket2.c @@ -169,13 +169,11 @@ soisdisconnecting(so) SOCK_UNLOCK(so); SOCKBUF_LOCK(&so->so_rcv); so->so_rcv.sb_state |= SBS_CANTRCVMORE; - SOCKBUF_UNLOCK(&so->so_rcv); + sorwakeup_locked(so); SOCKBUF_LOCK(&so->so_snd); so->so_snd.sb_state |= SBS_CANTSENDMORE; - SOCKBUF_UNLOCK(&so->so_snd); + sowwakeup_locked(so); wakeup(&so->so_timeo); - sowwakeup(so); - sorwakeup(so); } void @@ -188,20 +186,19 @@ soisdisconnected(so) * SOCKBUF_LOCK(&so->so_rcv) even though they are the same mutex to * avoid introducing the assumption that they are the same. */ + /* XXXRW: so_state locking? */ SOCK_LOCK(so); so->so_state &= ~(SS_ISCONNECTING|SS_ISCONNECTED|SS_ISDISCONNECTING); so->so_state |= SS_ISDISCONNECTED; SOCK_UNLOCK(so); SOCKBUF_LOCK(&so->so_rcv); so->so_rcv.sb_state |= SBS_CANTRCVMORE; - SOCKBUF_UNLOCK(&so->so_rcv); + sorwakeup_locked(so); SOCKBUF_LOCK(&so->so_snd); so->so_snd.sb_state |= SBS_CANTSENDMORE; sbdrop_locked(&so->so_snd, so->so_snd.sb_cc); - SOCKBUF_UNLOCK(&so->so_snd); + sowwakeup_locked(so); wakeup(&so->so_timeo); - sowwakeup(so); - sorwakeup(so); } /* diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c index 862b7bef391f..95e4874ec818 100644 --- a/sys/kern/uipc_usrreq.c +++ b/sys/kern/uipc_usrreq.c @@ -294,8 +294,7 @@ uipc_rcvd(struct socket *so, int flags) newhiwat, RLIM_INFINITY); unp->unp_cc = so->so_rcv.sb_cc; SOCKBUF_UNLOCK(&so->so_rcv); - SOCKBUF_UNLOCK(&so2->so_snd); - sowwakeup(so2); + sowwakeup_locked(so2); break; default: @@ -355,8 +354,7 @@ uipc_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *nam, from = &sun_noname; SOCKBUF_LOCK(&so2->so_rcv); if (sbappendaddr_locked(&so2->so_rcv, from, m, control)) { - SOCKBUF_UNLOCK(&so2->so_rcv); - sorwakeup(so2); + sorwakeup_locked(so2); m = NULL; control = NULL; } else { @@ -412,8 +410,7 @@ uipc_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *nam, (void)chgsbsize(so->so_cred->cr_uidinfo, &so->so_snd.sb_hiwat, newhiwat, RLIM_INFINITY); unp->unp_conn->unp_cc = so2->so_rcv.sb_cc; - SOCKBUF_UNLOCK(&so2->so_rcv); - sorwakeup(so2); + sorwakeup_locked(so2); m = NULL; break; |
