From: Matthew Dillon Date: Thu, 16 Sep 2010 07:44:10 +0000 (-0700) Subject: kernel - Make interrupt thread preemption programmable X-Git-Tag: v2.9.0~179 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/fbc024e4d165c7dc2e4acb4cc6fcd6ecd56e0297 kernel - Make interrupt thread preemption programmable * Add sysctl lwkt.preempt_enable (default on) to allow interrupt thread preemption to be controlled for debugging purposes. --- diff --git a/sys/kern/lwkt_thread.c b/sys/kern/lwkt_thread.c index 666220c6d7..31a5fcdcb5 100644 --- a/sys/kern/lwkt_thread.c +++ b/sys/kern/lwkt_thread.c @@ -153,6 +153,9 @@ static int fairq_enable = 1; SYSCTL_INT(_lwkt, OID_AUTO, fairq_enable, CTLFLAG_RW, &fairq_enable, 0, ""); static int user_pri_sched = 0; SYSCTL_INT(_lwkt, OID_AUTO, user_pri_sched, CTLFLAG_RW, &user_pri_sched, 0, ""); +static int preempt_enable = 1; +SYSCTL_INT(_lwkt, OID_AUTO, preempt_enable, CTLFLAG_RW, &preempt_enable, 0, ""); + /* * These helper procedures handle the runq, they can only be called from @@ -964,6 +967,11 @@ lwkt_preempt(thread_t ntd, int critcount) */ KASSERT(ntd->td_critcount, ("BADCRIT0 %d", ntd->td_pri)); + if (preempt_enable == 0) { + ++preempt_miss; + return; + } + td = gd->gd_curthread; if (ntd->td_pri <= td->td_pri) { ++preempt_miss;