PERFORCE change 114198 for review
Roman Divacky
rdivacky at FreeBSD.org
Wed Feb 7 18:55:09 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=114198
Change 114198 by rdivacky at rdivacky_witten on 2007/02/07 18:54:39
Turn emul_lock into a mutex and emul_shared_lock into a rwlock.
Affected files ...
.. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_sysvec.c#9 edit
.. //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#34 edit
.. //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.h#9 edit
.. //depot/projects/linuxolator/src/sys/compat/linux/linux_misc.c#57 edit
.. //depot/projects/linuxolator/src/sys/i386/linux/linux_sysvec.c#4 edit
Differences ...
==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_sysvec.c#9 (text+ko) ====
@@ -52,6 +52,7 @@
#include <sys/mutex.h>
#include <sys/proc.h>
#include <sys/resourcevar.h>
+#include <sys/rwlock.h>
#include <sys/signalvar.h>
#include <sys/sysctl.h>
#include <sys/syscallsubr.h>
@@ -1078,8 +1079,8 @@
linux_ioctl_register_handler(*lihp);
SET_FOREACH(ldhp, linux_device_handler_set)
linux_device_register_handler(*ldhp);
- sx_init(&emul_lock, "emuldata lock");
- sx_init(&emul_shared_lock, "emuldata->shared lock");
+ mtx_init(&emul_lock, "emuldata lock", NULL, MTX_DEF);
+ rw_init(&emul_shared_lock, "emuldata->shared lock");
LIST_INIT(&futex_list);
sx_init(&futex_sx, "futex protection lock");
linux_exit_tag = EVENTHANDLER_REGISTER(process_exit, linux_proc_exit,
@@ -1109,8 +1110,8 @@
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(&emul_lock);
+ rw_destroy(&emul_shared_lock);
sx_destroy(&futex_sx);
EVENTHANDLER_DEREGISTER(process_exit, linux_exit_tag);
EVENTHANDLER_DEREGISTER(schedtail, linux_schedtail_tag);
==== //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#34 (text+ko) ====
@@ -40,6 +40,7 @@
#include <sys/mutex.h>
#include <sys/sx.h>
#include <sys/proc.h>
+#include <sys/rwlock.h>
#include <sys/syscallsubr.h>
#include <sys/sysproto.h>
#include <sys/unistd.h>
@@ -55,8 +56,8 @@
#include <machine/../linux/linux_proto.h>
#endif
-struct sx emul_shared_lock;
-struct sx emul_lock;
+struct rwlock emul_shared_lock;
+struct mtx emul_lock;
/* this returns locked reference to the emuldata entry (if found) */
struct linux_emuldata *
==== //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.h#9 (text+ko) ====
@@ -57,13 +57,13 @@
struct linux_emuldata *em_find(struct proc *, int locked);
-#define EMUL_LOCK(l) sx_xlock(l)
-#define EMUL_UNLOCK(l) sx_xunlock(l)
+#define EMUL_LOCK(l) mtx_lock(l)
+#define EMUL_UNLOCK(l) mtx_unlock(l)
-#define EMUL_SHARED_RLOCK(l) sx_slock(l)
-#define EMUL_SHARED_RUNLOCK(l) sx_sunlock(l)
-#define EMUL_SHARED_WLOCK(l) sx_xlock(l)
-#define EMUL_SHARED_WUNLOCK(l) sx_xunlock(l)
+#define EMUL_SHARED_RLOCK(l) rw_rlock(l)
+#define EMUL_SHARED_RUNLOCK(l) rw_runlock(l)
+#define EMUL_SHARED_WLOCK(l) rw_wlock(l)
+#define EMUL_SHARED_WUNLOCK(l) rw_wunlock(l)
/* for em_find use */
#define EMUL_DOLOCK 1
@@ -74,7 +74,7 @@
void linux_schedtail(void *, struct proc *);
void linux_proc_exec(void *, struct proc *, struct image_params *);
-extern struct sx emul_shared_lock;
-extern struct sx emul_lock;
+extern struct rwlock emul_shared_lock;
+extern struct mtx emul_lock;
#endif /* !_LINUX_EMUL_H_ */
==== //depot/projects/linuxolator/src/sys/compat/linux/linux_misc.c#57 (text+ko) ====
@@ -52,6 +52,7 @@
#include <sys/proc.h>
#include <sys/reboot.h>
#include <sys/resourcevar.h>
+#include <sys/rwlock.h>
#include <sys/sched.h>
#include <sys/signalvar.h>
#include <sys/stat.h>
==== //depot/projects/linuxolator/src/sys/i386/linux/linux_sysvec.c#4 (text+ko) ====
@@ -41,6 +41,7 @@
#include <sys/module.h>
#include <sys/mutex.h>
#include <sys/proc.h>
+#include <sys/rwlock.h>
#include <sys/signalvar.h>
#include <sys/syscallsubr.h>
#include <sys/sysent.h>
@@ -917,8 +918,8 @@
linux_ioctl_register_handler(*lihp);
SET_FOREACH(ldhp, linux_device_handler_set)
linux_device_register_handler(*ldhp);
- sx_init(&emul_lock, "emuldata lock");
- sx_init(&emul_shared_lock, "emuldata->shared lock");
+ mtx_init(&emul_lock, "emuldata lock", NULL, MTX_DEF);
+ rw_init(&emul_shared_lock, "emuldata->shared lock");
LIST_INIT(&futex_list);
sx_init(&futex_sx, "futex protection lock");
linux_exit_tag = EVENTHANDLER_REGISTER(process_exit, linux_proc_exit,
@@ -948,8 +949,8 @@
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(&emul_lock);
+ rw_destroy(&emul_shared_lock);
sx_destroy(&futex_sx);
EVENTHANDLER_DEREGISTER(process_exit, linux_exit_tag);
EVENTHANDLER_DEREGISTER(schedtail, linux_schedtail_tag);
More information about the p4-projects
mailing list