I'd like to force a yield() for every pool_get(9) using PR_WAITOK, just
like we do with malloc(9), in order to ensure that the NET_LOCK() is not
held across context switches. 

ok?

Index: kern/subr_pool.c
===================================================================
RCS file: /cvs/src/sys/kern/subr_pool.c,v
retrieving revision 1.204
diff -u -p -r1.204 subr_pool.c
--- kern/subr_pool.c    21 Nov 2016 01:44:06 -0000      1.204
+++ kern/subr_pool.c    24 Jan 2017 06:29:09 -0000
@@ -513,7 +513,7 @@ pool_get(struct pool *pp, int flags)
        }
        mtx_leave(&pp->pr_mtx);
 
-       if (slowdown && ISSET(flags, PR_WAITOK))
+       if ((slowdown || pool_debug == 2) && ISSET(flags, PR_WAITOK))
                yield();
 
        if (v == NULL) {

Reply via email to