PERFORCE change 104041 for review

Roman Divacky rdivacky at FreeBSD.org
Tue Aug 15 15:18:02 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=104041

Change 104041 by rdivacky at rdivacky_witten on 2006/08/15 15:17:23

	Initialize mtx/sx/LIST in amd64.

Affected files ...

.. //depot/projects/soc2006/rdivacky_linuxolator/amd64/linux32/linux32_sysvec.c#7 edit

Differences ...

==== //depot/projects/soc2006/rdivacky_linuxolator/amd64/linux32/linux32_sysvec.c#7 (text+ko) ====

@@ -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>
@@ -121,6 +123,13 @@
 				   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;
+
+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:
@@ -1068,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
@@ -1089,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


More information about the p4-projects mailing list