When setting up a socket in socreate(), there's no need to lock the
socket lock around knlist_init(), so don't. Hard code the setting of the socket reference count to 1 rather than using soref() to avoid asserting the socket lock, since we've not yet exposed the socket to other threads. This removes two mutex operations from each socket allocation.
This commit is contained in:
parent
7f93ed1515
commit
1723d628c5
@ -211,11 +211,9 @@ socreate(dom, aso, type, proto, cred, td)
|
||||
#ifdef MAC
|
||||
mac_create_socket(cred, so);
|
||||
#endif
|
||||
SOCK_LOCK(so);
|
||||
knlist_init(&so->so_rcv.sb_sel.si_note, SOCKBUF_MTX(&so->so_rcv));
|
||||
knlist_init(&so->so_snd.sb_sel.si_note, SOCKBUF_MTX(&so->so_snd));
|
||||
soref(so);
|
||||
SOCK_UNLOCK(so);
|
||||
so->so_count = 1;
|
||||
error = (*prp->pr_usrreqs->pru_attach)(so, proto, td);
|
||||
if (error) {
|
||||
ACCEPT_LOCK();
|
||||
|
Loading…
x
Reference in New Issue
Block a user