From 623f06756a2fee7aa42dcd2328139007fd86bdb8 Mon Sep 17 00:00:00 2001 From: jake Date: Wed, 28 Feb 2001 02:53:44 +0000 Subject: [PATCH] Sigh. Try to get priorities sorted out. Don't bother trying to update native priority, it is diffcult to get right and likely to end up horribly wrong. Use an honestly wrong fixed value that seems to work; PUSER for user threads, and the interrupt priority for ithreads. Set it once when the process is created and forget about it. Suggested by: bde Pointy hat: me --- sys/kern/init_main.c | 2 +- sys/kern/kern_fork.c | 1 - sys/kern/kern_intr.c | 1 + sys/kern/kern_mutex.c | 2 -- sys/kern/subr_turnstile.c | 2 -- sys/kern/subr_witness.c | 2 -- 6 files changed, 2 insertions(+), 8 deletions(-) diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c index 423139098d52..1bc112df47cd 100644 --- a/sys/kern/init_main.c +++ b/sys/kern/init_main.c @@ -306,7 +306,7 @@ proc0_init(void *dummy __unused) p->p_nice = NZERO; p->p_pri.pri_class = PRI_TIMESHARE; p->p_pri.pri_level = PVM; - p->p_pri.pri_native = PRI_MAX; + p->p_pri.pri_native = PUSER; p->p_pri.pri_user = PUSER; p->p_peers = 0; diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c index e99ef22d4fad..9f19669a5649 100644 --- a/sys/kern/kern_fork.c +++ b/sys/kern/kern_fork.c @@ -357,7 +357,6 @@ fork1(p1, flags, procp) p2 = newproc; p2->p_intr_nesting_level = 0; - p2->p_pri.pri_native = PRI_MAX; p2->p_stat = SIDL; /* protect against others */ p2->p_pid = trypid; LIST_INSERT_HEAD(&allproc, p2, p_list); diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c index 1c37284961dd..f64e89defacf 100644 --- a/sys/kern/kern_intr.c +++ b/sys/kern/kern_intr.c @@ -134,6 +134,7 @@ ithread_update(struct ithd *ithd) entropy = 0; p->p_pri.pri_level = ih->ih_pri; + p->p_pri.pri_native = ih->ih_pri; TAILQ_FOREACH(ih, &ithd->it_handlers, ih_next) { if (strlen(p->p_comm) + strlen(ih->ih_name) + 1 < sizeof(p->p_comm)) { diff --git a/sys/kern/kern_mutex.c b/sys/kern/kern_mutex.c index fbee435ab241..0b0ba86995e3 100644 --- a/sys/kern/kern_mutex.c +++ b/sys/kern/kern_mutex.c @@ -426,8 +426,6 @@ _mtx_lock_sleep(struct mtx *m, int opts, const char *file, int line) p->p_blocked = m; p->p_mtxname = m->mtx_description; p->p_stat = SMTX; - if (p->p_pri.pri_native == PRI_MAX) - p->p_pri.pri_native = p->p_pri.pri_level; propagate_priority(p); if ((opts & MTX_QUIET) == 0) diff --git a/sys/kern/subr_turnstile.c b/sys/kern/subr_turnstile.c index fbee435ab241..0b0ba86995e3 100644 --- a/sys/kern/subr_turnstile.c +++ b/sys/kern/subr_turnstile.c @@ -426,8 +426,6 @@ _mtx_lock_sleep(struct mtx *m, int opts, const char *file, int line) p->p_blocked = m; p->p_mtxname = m->mtx_description; p->p_stat = SMTX; - if (p->p_pri.pri_native == PRI_MAX) - p->p_pri.pri_native = p->p_pri.pri_level; propagate_priority(p); if ((opts & MTX_QUIET) == 0) diff --git a/sys/kern/subr_witness.c b/sys/kern/subr_witness.c index fbee435ab241..0b0ba86995e3 100644 --- a/sys/kern/subr_witness.c +++ b/sys/kern/subr_witness.c @@ -426,8 +426,6 @@ _mtx_lock_sleep(struct mtx *m, int opts, const char *file, int line) p->p_blocked = m; p->p_mtxname = m->mtx_description; p->p_stat = SMTX; - if (p->p_pri.pri_native == PRI_MAX) - p->p_pri.pri_native = p->p_pri.pri_level; propagate_priority(p); if ((opts & MTX_QUIET) == 0)