From: Sepherosa Ziehau Date: Thu, 25 Dec 2014 11:16:46 +0000 (+0800) Subject: socket: Add KTR_SOWAKEUP X-Git-Tag: v4.2.0rc~1257 X-Git-Url: https://gitweb.dragonflybsd.org/~tuxillo/dragonfly.git/commitdiff_plain/b981a49da95ca31cd7bef3e186ddb2a996f2d6e2 socket: Add KTR_SOWAKEUP Define 2 pairs of children nodes for this KTR, which are used to tracking extra IPIs for accept(2). Note: The tracked sorwakeup() and the wakeup(so_timeo) does not generate extra (wakeup) IPIs. --- diff --git a/sys/conf/options b/sys/conf/options index b67d17986c..011abcc860 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -577,6 +577,7 @@ KTR_USCHED_DFLY opt_ktr.h KTR_VERBOSE opt_ktr.h KTR_IF_POLL opt_ktr.h KTR_UDP opt_ktr.h +KTR_SOWAKEUP opt_ktr.h # NTFS options NTFS_DEBUG opt_ntfs.h diff --git a/sys/config/LINT64 b/sys/config/LINT64 index 9ddb32a044..8df428cfe7 100644 --- a/sys/config/LINT64 +++ b/sys/config/LINT64 @@ -2280,6 +2280,7 @@ options KTR_VERBOSE=1 #options KTR_KERNENTRY #options KTR_MEMORY #options KTR_SERIALIZER +#options KTR_SOWAKEUP #options KTR_SPIN_CONTENTION #options KTR_TESTLOG #options KTR_TOKENS diff --git a/sys/kern/uipc_socket2.c b/sys/kern/uipc_socket2.c index f24ee15254..7ad2c517bb 100644 --- a/sys/kern/uipc_socket2.c +++ b/sys/kern/uipc_socket2.c @@ -38,6 +38,7 @@ #include #include /* for maxfiles */ #include +#include #include #include #include @@ -57,6 +58,16 @@ #include +#ifndef KTR_SOWAKEUP +#define KTR_SOWAKEUP KTR_ALL +#endif +KTR_INFO_MASTER(sowakeup); +KTR_INFO(KTR_SOWAKEUP, sowakeup, nconn_start, 0, "newconn sorwakeup start"); +KTR_INFO(KTR_SOWAKEUP, sowakeup, nconn_end, 1, "newconn sorwakeup end"); +KTR_INFO(KTR_SOWAKEUP, sowakeup, nconn_wakeupstart, 2, "newconn wakeup start"); +KTR_INFO(KTR_SOWAKEUP, sowakeup, nconn_wakeupend, 3, "newconn wakeup end"); +#define logsowakeup(name) KTR_LOG(sowakeup_ ## name) + int maxsockets; /* @@ -440,8 +451,14 @@ sonewconn_faddr(struct socket *head, int connstatus, * XXX head may be on a different protocol thread. * sorwakeup()->sowakeup() is hacked atm. */ + logsowakeup(nconn_start); sorwakeup(head); + logsowakeup(nconn_end); + + logsowakeup(nconn_wakeupstart); wakeup((caddr_t)&head->so_timeo); + logsowakeup(nconn_wakeupend); + sosetstate(so, connstatus); } soclrstate(so, SS_ASSERTINPROG);