PERFORCE change 43004 for review
Sam Leffler
sam at FreeBSD.org
Mon Nov 24 12:54:01 PST 2003
http://perforce.freebsd.org/chv.cgi?CH=43004
Change 43004 by sam at sam_ebb on 2003/11/24 12:53:14
split the "inp" mutex class into separate classes for
each of divert, raw, tcp, udp, raw6, and udp6 sockets
to avoid spurious witness complaints
Affected files ...
.. //depot/projects/netperf/sys/netinet/in_pcb.c#20 edit
.. //depot/projects/netperf/sys/netinet/in_pcb.h#16 edit
.. //depot/projects/netperf/sys/netinet/ip_divert.c#17 edit
.. //depot/projects/netperf/sys/netinet/raw_ip.c#13 edit
.. //depot/projects/netperf/sys/netinet/tcp_usrreq.c#8 edit
.. //depot/projects/netperf/sys/netinet/udp_usrreq.c#14 edit
.. //depot/projects/netperf/sys/netinet6/raw_ip6.c#11 edit
.. //depot/projects/netperf/sys/netinet6/udp6_usrreq.c#7 edit
Differences ...
==== //depot/projects/netperf/sys/netinet/in_pcb.c#20 (text+ko) ====
@@ -157,10 +157,11 @@
* Allocate a PCB and associate it with the socket.
*/
int
-in_pcballoc(so, pcbinfo, td)
+in_pcballoc(so, pcbinfo, td, type)
struct socket *so;
struct inpcbinfo *pcbinfo;
struct thread *td;
+ const char *type;
{
register struct inpcb *inp;
int error;
@@ -198,7 +199,7 @@
LIST_INSERT_HEAD(pcbinfo->listhead, inp, inp_list);
pcbinfo->ipi_count++;
so->so_pcb = (caddr_t)inp;
- INP_LOCK_INIT(inp, "inp");
+ INP_LOCK_INIT(inp, "inp", type);
#ifdef INET6
if (ip6_auto_flowlabel)
inp->inp_flags |= IN6P_AUTOFLOWLABEL;
==== //depot/projects/netperf/sys/netinet/in_pcb.h#16 (text+ko) ====
@@ -242,8 +242,8 @@
* this code is shared by both IPv4 and IPv6 and IPv6 is
* not properly locked.
*/
-#define INP_LOCK_INIT(inp, d) \
- mtx_init(&(inp)->inp_mtx, (d), NULL, MTX_DEF | MTX_RECURSE | MTX_DUPOK)
+#define INP_LOCK_INIT(inp, d, t) \
+ mtx_init(&(inp)->inp_mtx, (d), (t), MTX_DEF | MTX_RECURSE | MTX_DUPOK)
#define INP_LOCK_DESTROY(inp) mtx_destroy(&(inp)->inp_mtx)
#define INP_LOCK(inp) mtx_lock(&(inp)->inp_mtx)
#define INP_UNLOCK(inp) mtx_unlock(&(inp)->inp_mtx)
@@ -337,7 +337,8 @@
extern int ipport_hilastauto;
void in_pcbpurgeif0(struct inpcbinfo *, struct ifnet *);
-int in_pcballoc(struct socket *, struct inpcbinfo *, struct thread *);
+int in_pcballoc(struct socket *, struct inpcbinfo *, struct thread *,
+ const char *);
int in_pcbbind(struct inpcb *, struct sockaddr *, struct thread *);
int in_pcbbind_setup(struct inpcb *, struct sockaddr *, in_addr_t *,
u_short *, struct thread *);
==== //depot/projects/netperf/sys/netinet/ip_divert.c#17 (text+ko) ====
@@ -393,7 +393,7 @@
INP_INFO_WUNLOCK(&divcbinfo);
return error;
}
- error = in_pcballoc(so, &divcbinfo, td);
+ error = in_pcballoc(so, &divcbinfo, td, "divinp");
if (error) {
INP_INFO_WUNLOCK(&divcbinfo);
return error;
==== //depot/projects/netperf/sys/netinet/raw_ip.c#13 (text+ko) ====
@@ -541,7 +541,7 @@
INP_INFO_WUNLOCK(&ripcbinfo);
return error;
}
- error = in_pcballoc(so, &ripcbinfo, td);
+ error = in_pcballoc(so, &ripcbinfo, td, "rawinp");
if (error) {
INP_INFO_WUNLOCK(&ripcbinfo);
return error;
==== //depot/projects/netperf/sys/netinet/tcp_usrreq.c#8 (text+ko) ====
@@ -1175,7 +1175,7 @@
if (error)
return (error);
}
- error = in_pcballoc(so, &tcbinfo, td);
+ error = in_pcballoc(so, &tcbinfo, td, "tcpinp");
if (error)
return (error);
inp = sotoinpcb(so);
==== //depot/projects/netperf/sys/netinet/udp_usrreq.c#14 (text+ko) ====
@@ -943,7 +943,7 @@
return error;
}
s = splnet();
- error = in_pcballoc(so, &udbinfo, td);
+ error = in_pcballoc(so, &udbinfo, td, "udpinp");
splx(s);
if (error) {
INP_INFO_WUNLOCK(&udbinfo);
==== //depot/projects/netperf/sys/netinet6/raw_ip6.c#11 (text+ko) ====
@@ -580,7 +580,7 @@
if (error)
return error;
s = splnet();
- error = in_pcballoc(so, &ripcbinfo, td);
+ error = in_pcballoc(so, &ripcbinfo, td, "raw6inp");
splx(s);
if (error)
return error;
==== //depot/projects/netperf/sys/netinet6/udp6_usrreq.c#7 (text+ko) ====
@@ -560,7 +560,7 @@
return error;
}
s = splnet();
- error = in_pcballoc(so, &udbinfo, td);
+ error = in_pcballoc(so, &udbinfo, td, "udp6inp");
splx(s);
if (error)
return error;
More information about the p4-projects
mailing list