summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2001-02-28 02:53:44 +0000
committerjake <jake@FreeBSD.org>2001-02-28 02:53:44 +0000
commit623f06756a2fee7aa42dcd2328139007fd86bdb8 (patch)
tree2c59521942b2c5e581e4929f8e039ce2f6c63ccd /sys
parentb31794bc17abbe5f5aec97c5172725ab3fbb9443 (diff)
downloadFreeBSD-src-623f06756a2fee7aa42dcd2328139007fd86bdb8.zip
FreeBSD-src-623f06756a2fee7aa42dcd2328139007fd86bdb8.tar.gz
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
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/init_main.c2
-rw-r--r--sys/kern/kern_fork.c1
-rw-r--r--sys/kern/kern_intr.c1
-rw-r--r--sys/kern/kern_mutex.c2
-rw-r--r--sys/kern/subr_turnstile.c2
-rw-r--r--sys/kern/subr_witness.c2
6 files changed, 2 insertions, 8 deletions
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c
index 4231390..1bc112d 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 e99ef22..9f19669 100644
--- a/sys/kern/kern_fork.c
+++ b/sys/kern/kern_fork.c
@@ -357,7 +357,6 @@ again:
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 1c37284..f64e89d 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 fbee435..0b0ba86 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 fbee435..0b0ba86 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 fbee435..0b0ba86 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)
OpenPOWER on IntegriCloud