summaryrefslogtreecommitdiffstats
path: root/sys/cddl/compat
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2009-08-23 11:22:46 +0000
committerpjd <pjd@FreeBSD.org>2009-08-23 11:22:46 +0000
commit97a1f428d99ab7d25e48a0af90c084d8919f267b (patch)
treeb4930fa4a6dad8e1b60aff4c055e84fc75034875 /sys/cddl/compat
parent7b73bc23e1aa17cba7b690ce5eb085c70f248bf8 (diff)
downloadFreeBSD-src-97a1f428d99ab7d25e48a0af90c084d8919f267b.zip
FreeBSD-src-97a1f428d99ab7d25e48a0af90c084d8919f267b.tar.gz
- Give minclsyspri and maxclsyspri real values (consulted with kmacy).
- Honour 'pri' argument for thread_create().
Diffstat (limited to 'sys/cddl/compat')
-rw-r--r--sys/cddl/compat/opensolaris/sys/mutex.h2
-rw-r--r--sys/cddl/compat/opensolaris/sys/proc.h18
2 files changed, 16 insertions, 4 deletions
diff --git a/sys/cddl/compat/opensolaris/sys/mutex.h b/sys/cddl/compat/opensolaris/sys/mutex.h
index 8756cd0..f6858a7 100644
--- a/sys/cddl/compat/opensolaris/sys/mutex.h
+++ b/sys/cddl/compat/opensolaris/sys/mutex.h
@@ -32,9 +32,9 @@
#ifdef _KERNEL
#include <sys/param.h>
-#include <sys/proc.h>
#include <sys/lock.h>
#include_next <sys/mutex.h>
+#include <sys/proc.h>
#include <sys/sx.h>
typedef enum {
diff --git a/sys/cddl/compat/opensolaris/sys/proc.h b/sys/cddl/compat/opensolaris/sys/proc.h
index 73fbcda..dfacebc 100644
--- a/sys/cddl/compat/opensolaris/sys/proc.h
+++ b/sys/cddl/compat/opensolaris/sys/proc.h
@@ -34,13 +34,16 @@
#include_next <sys/proc.h>
#include <sys/stdint.h>
#include <sys/smp.h>
+#include <sys/sched.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
#include <sys/debug.h>
#ifdef _KERNEL
#define CPU curcpu
-#define minclsyspri 0
-#define maxclsyspri 0
+#define minclsyspri PRIBIO
+#define maxclsyspri PVM
#define max_ncpus mp_ncpus
#define boot_max_ncpus mp_ncpus
@@ -58,6 +61,7 @@ static __inline kthread_t *
thread_create(caddr_t stk, size_t stksize, void (*proc)(void *), void *arg,
size_t len, proc_t *pp, int state, pri_t pri)
{
+ kthread_t *td;
proc_t *p;
int error;
@@ -70,7 +74,15 @@ thread_create(caddr_t stk, size_t stksize, void (*proc)(void *), void *arg,
error = kproc_create(proc, arg, &p, 0, stksize / PAGE_SIZE,
"solthread %p", proc);
- return (error == 0 ? FIRST_THREAD_IN_PROC(p) : NULL);
+ if (error != 0)
+ td = NULL;
+ else {
+ td = FIRST_THREAD_IN_PROC(p);
+ thread_lock(td);
+ sched_prio(td, pri);
+ thread_unlock(td);
+ }
+ return (td);
}
#define thread_exit() kproc_exit(0)
OpenPOWER on IntegriCloud