diff options
author | Julian Elischer <julian@FreeBSD.org> | 2002-06-29 17:26:22 +0000 |
---|---|---|
committer | Julian Elischer <julian@FreeBSD.org> | 2002-06-29 17:26:22 +0000 |
commit | e602ba25fd1f9a7ea2215c01f470c08f140de809 (patch) | |
tree | 0a0483a267784fa8e2bf86857d8727edb5b122e9 /sys/ia64 | |
parent | cc5dcb202cd7616bae9321687ec46a384a061d99 (diff) | |
download | src-e602ba25fd1f9a7ea2215c01f470c08f140de809.tar.gz src-e602ba25fd1f9a7ea2215c01f470c08f140de809.zip |
Part 1 of KSE-III
The ability to schedule multiple threads per process
(one one cpu) by making ALL system calls optionally asynchronous.
to come: ia64 and power-pc patches, patches for gdb, test program (in tools)
Reviewed by: Almost everyone who counts
(at various times, peter, jhb, matt, alfred, mini, bernd,
and a cast of thousands)
NOTE: this is still Beta code, and contains lots of debugging stuff.
expect slight instability in signals..
Notes
Notes:
svn path=/head/; revision=99072
Diffstat (limited to 'sys/ia64')
-rw-r--r-- | sys/ia64/ia64/trap.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/sys/ia64/ia64/trap.c b/sys/ia64/ia64/trap.c index e38945fa4c43..4ffdb15ac264 100644 --- a/sys/ia64/ia64/trap.c +++ b/sys/ia64/ia64/trap.c @@ -872,14 +872,14 @@ syscall(int code, u_int64_t *args, struct trapframe *framep) break; } - userret(td, framep, sticks); - /* * Release Giant if we had to get it. */ if ((callp->sy_narg & SYF_MPSAFE) == 0) mtx_unlock(&Giant); + userret(td, framep, sticks); + #ifdef KTRACE if (KTRPOINT(td, KTR_SYSRET)) ktrsysret(code, error, td->td_retval[0]); @@ -1043,16 +1043,16 @@ ia32_syscall(struct trapframe *framep) } /* - * Handle reschedule and other end-of-syscall issues - */ - userret(td, framep, sticks); - - /* * Release Giant if we previously set it. */ if ((callp->sy_narg & SYF_MPSAFE) == 0) mtx_unlock(&Giant); + /* + * Handle reschedule and other end-of-syscall issues + */ + userret(td, framep, sticks); + #ifdef KTRACE if (KTRPOINT(td, KTR_SYSRET)) ktrsysret(code, error, td->td_retval[0]); |