diff options
author | netchild <netchild@FreeBSD.org> | 2006-09-09 16:25:25 +0000 |
---|---|---|
committer | netchild <netchild@FreeBSD.org> | 2006-09-09 16:25:25 +0000 |
commit | 2140995733dab01b8715529780b0f015472c6221 (patch) | |
tree | 8baf9a85d96af5ccbd1041dde34afb34fc359205 /sys/i386/linux/linux_sysvec.c | |
parent | 5eee50ca3619c4fd92c6f420733cd71a1d39c3ed (diff) | |
download | FreeBSD-src-2140995733dab01b8715529780b0f015472c6221.zip FreeBSD-src-2140995733dab01b8715529780b0f015472c6221.tar.gz |
Change futex lock from mutex to sx. Make futex_get atomic (protected by the
futex lock).
Sponsored by: Google SoC 2006
Submitted by: rdivacky
Suggested by: jhb
Diffstat (limited to 'sys/i386/linux/linux_sysvec.c')
-rw-r--r-- | sys/i386/linux/linux_sysvec.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/i386/linux/linux_sysvec.c b/sys/i386/linux/linux_sysvec.c index b6b2cda..9dc804d 100644 --- a/sys/i386/linux/linux_sysvec.c +++ b/sys/i386/linux/linux_sysvec.c @@ -108,7 +108,7 @@ static void exec_linux_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings); extern LIST_HEAD(futex_list, futex) futex_list; -extern struct mtx futex_mtx; +extern struct sx futex_sx; static eventhandler_tag linux_exit_tag; static eventhandler_tag linux_schedtail_tag; @@ -920,7 +920,7 @@ linux_elf_modevent(module_t mod, int type, void *data) sx_init(&emul_lock, "emuldata lock"); sx_init(&emul_shared_lock, "emuldata->shared lock"); LIST_INIT(&futex_list); - mtx_init(&futex_mtx, "futex protection lock", NULL, MTX_DEF); + sx_init(&futex_sx, "futex protection lock"); linux_exit_tag = EVENTHANDLER_REGISTER(process_exit, linux_proc_exit, NULL, 1000); linux_schedtail_tag = EVENTHANDLER_REGISTER(schedtail, linux_schedtail, @@ -950,7 +950,7 @@ linux_elf_modevent(module_t mod, int type, void *data) linux_device_unregister_handler(*ldhp); sx_destroy(&emul_lock); sx_destroy(&emul_shared_lock); - mtx_destroy(&futex_mtx); + sx_destroy(&futex_sx); EVENTHANDLER_DEREGISTER(process_exit, linux_exit_tag); EVENTHANDLER_DEREGISTER(schedtail, linux_schedtail_tag); EVENTHANDLER_DEREGISTER(process_exec, linux_exec_tag); |