Date: Tue, 15 Aug 2006 15:05:44 GMT From: John Baldwin <jhb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 104040 for review Message-ID: <200608151505.k7FF5iUx000456@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=104040 Change 104040 by jhb@jhb_mutex on 2006/08/15 15:04:53 IFC @104038. Affected files ... .. //depot/projects/smpng/sys/amd64/linux32/linux32_sysvec.c#19 integrate Differences ... ==== //depot/projects/smpng/sys/amd64/linux32/linux32_sysvec.c#19 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_sysvec.c,v 1.20 2006/08/15 12:54:29 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_sysvec.c,v 1.21 2006/08/15 14:58:15 netchild Exp $"); #include "opt_compat.h" #ifndef COMPAT_IA32 @@ -58,6 +58,7 @@ #include <sys/sysent.h> #include <sys/sysproto.h> #include <sys/vnode.h> +#include <sys/eventhandler.h> #include <vm/vm.h> #include <vm/pmap.h> @@ -74,6 +75,7 @@ #include <amd64/linux32/linux.h> #include <amd64/linux32/linux32_proto.h> +#include <compat/linux/linux_emul.h> #include <compat/linux/linux_mib.h> #include <compat/linux/linux_signal.h> #include <compat/linux/linux_util.h> @@ -119,6 +121,15 @@ u_long stack, u_long ps_strings); static void linux32_fixlimits(struct proc *p); +extern LIST_HEAD(futex_list, futex) futex_list; +extern struct mtx futex_mtx; +extern struct sx emul_shared_lock; +extern struct sx emul_lock; + +static eventhandler_tag linux_exit_tag; +static eventhandler_tag linux_schedtail_tag; +static eventhandler_tag linux_exec_tag; + /* * Linux syscalls return negative errno's, we do positive and map them * Reference: @@ -1066,6 +1077,15 @@ linux_ioctl_register_handler(*lihp); SET_FOREACH(ldhp, linux_device_handler_set) linux_device_register_handler(*ldhp); + sx_init(&emul_shared_lock, "emuldata->shared lock"); + LIST_INIT(&futex_list); + mtx_init(&futex_mtx, "futex protection lock", NULL, MTX_DEF); + linux_exit_tag = EVENTHANDLER_REGISTER(process_exit, linux_proc_exit, + NULL, 1000); + linux_schedtail_tag = EVENTHANDLER_REGISTER(schedtail, linux_schedtail, + NULL, 1000); + linux_exec_tag = EVENTHANDLER_REGISTER(process_exec, linux_proc_exec, + NULL, 1000); if (bootverbose) printf("Linux ELF exec handler installed\n"); } else @@ -1087,6 +1107,12 @@ linux_ioctl_unregister_handler(*lihp); SET_FOREACH(ldhp, linux_device_handler_set) linux_device_unregister_handler(*ldhp); + sx_destroy(&emul_lock); + sx_destroy(&emul_shared_lock); + mtx_destroy(&futex_mtx); + EVENTHANDLER_DEREGISTER(process_exit, linux_exit_tag); + EVENTHANDLER_DEREGISTER(schedtail, linux_schedtail_tag); + EVENTHANDLER_DEREGISTER(process_exec, linux_exec_tag); if (bootverbose) printf("Linux ELF exec handler removed\n"); } else
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200608151505.k7FF5iUx000456>