diff options
author | pjd <pjd@FreeBSD.org> | 2009-08-23 11:22:46 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2009-08-23 11:22:46 +0000 |
commit | 97a1f428d99ab7d25e48a0af90c084d8919f267b (patch) | |
tree | b4930fa4a6dad8e1b60aff4c055e84fc75034875 /sys/cddl/compat | |
parent | 7b73bc23e1aa17cba7b690ce5eb085c70f248bf8 (diff) | |
download | FreeBSD-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.h | 2 | ||||
-rw-r--r-- | sys/cddl/compat/opensolaris/sys/proc.h | 18 |
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) |