]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add wrappers for sem_wait and sem_trywait on Darwin. Also change the layout
authorNicholas Nethercote <njn@valgrind.org>
Wed, 10 Jun 2009 01:23:26 +0000 (01:23 +0000)
committerNicholas Nethercote <njn@valgrind.org>
Wed, 10 Jun 2009 01:23:26 +0000 (01:23 +0000)
of some Darwin syscall stuff.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10288

coregrind/m_syswrap/priv_syswrap-darwin.h
coregrind/m_syswrap/syswrap-darwin.c
include/vki/vki-scnums-darwin.h
memcheck/tests/darwin/scalar.c

index 4f0d5a4002d924fa6875f253f076f637e3438bcb..651f0c884389786a76df10c5115617be9b24f50f 100644 (file)
@@ -57,6 +57,8 @@ DECL_TEMPLATE(darwin, sys_semctl);
 DECL_TEMPLATE(darwin, sys_sem_open);
 DECL_TEMPLATE(darwin, sys_sem_close);
 DECL_TEMPLATE(darwin, sys_sem_unlink);
+DECL_TEMPLATE(darwin, sys_sem_wait);
+DECL_TEMPLATE(darwin, sys_sem_trywait);
 DECL_TEMPLATE(darwin, sys_sem_post);
 DECL_TEMPLATE(darwin, sys_sem_init);
 DECL_TEMPLATE(darwin, sys_sem_destroy);
index f1a8a5e4b690c9b19d346af61385ca72dd4733c7..62e0959802e71e23808289654efea9031fd8d87e 100644 (file)
@@ -1406,6 +1406,13 @@ POST(sys_sem_init)
   POST_MEM_WRITE(ARG1, sizeof(vki_sem_t));
 }
 
+PRE(sys_sem_wait)
+{
+   PRINT("sem_wait( %#lx )", ARG1);
+   PRE_REG_READ1(int, "sem_wait", vki_sem_t *, sem);
+   *flags |= SfMayBlock;
+}
+
 PRE(sys_sem_wait_nocancel)
 {
    PRINT("sem_wait_nocancel( %#lx )", ARG1);
@@ -7247,7 +7254,7 @@ const SyscallTableEntry ML_(syscall_table)[] = {
    MACX_(__NR_sem_open, sys_sem_open), 
    MACX_(__NR_sem_close, sys_sem_close), 
    MACX_(__NR_sem_unlink, sys_sem_unlink), 
-// _____(__NR_sem_wait), 
+   MACX_(__NR_sem_wait,    sys_sem_wait), 
    MACX_(__NR_sem_trywait, sys_sem_trywait), 
 // _____(__NR_sem_post), 
    MACX_(__NR_sem_post, sys_sem_post), 
index 4dfd22ae25fbb6dcccc0239b849e623a31a0646d..5ddb14bf5869c02938af1f838f461935c4acec2c 100644 (file)
 #define __NR___mac_set_lctx VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(393)
 #define __NR_setlcid        VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(394)
 #define __NR_getlcid        VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(395)
-#define __NR_read_nocancel  VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(396)
-#define __NR_write_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(397)
-#define __NR_open_nocancel  VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(398)
-#define __NR_close_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(399)
-#define __NR_wait4_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(400)
-#define __NR_recvmsg_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(401)
-#define __NR_sendmsg_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(402)
-#define __NR_recvfrom_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(403)
-#define __NR_accept_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(404)
-#define __NR_msync_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(405)
-#define __NR_fcntl_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(406)
-#define __NR_select_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(407)
-#define __NR_fsync_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(408)
-#define __NR_connect_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(409)
-#define __NR_sigsuspend_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(410)
-#define __NR_readv_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(411)
-#define __NR_writev_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(412)
-#define __NR_sendto_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(413)
-#define __NR_pread_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(414)
-#define __NR_pwrite_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(415)
-#define __NR_waitid_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(416)
-#define __NR_poll_nocancel  VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(417)
-#define __NR_msgsnd_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(418)
-#define __NR_msgrcv_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(419)
-#define __NR_sem_wait_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(420)
-#define __NR_aio_suspend_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(421)
-#define __NR___sigwait_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(422)
+#define __NR_read_nocancel          VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(396)
+#define __NR_write_nocancel         VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(397)
+#define __NR_open_nocancel          VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(398)
+#define __NR_close_nocancel         VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(399)
+#define __NR_wait4_nocancel         VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(400)
+#define __NR_recvmsg_nocancel       VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(401)
+#define __NR_sendmsg_nocancel       VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(402)
+#define __NR_recvfrom_nocancel      VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(403)
+#define __NR_accept_nocancel        VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(404)
+#define __NR_msync_nocancel         VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(405)
+#define __NR_fcntl_nocancel         VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(406)
+#define __NR_select_nocancel        VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(407)
+#define __NR_fsync_nocancel         VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(408)
+#define __NR_connect_nocancel       VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(409)
+#define __NR_sigsuspend_nocancel    VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(410)
+#define __NR_readv_nocancel         VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(411)
+#define __NR_writev_nocancel        VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(412)
+#define __NR_sendto_nocancel        VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(413)
+#define __NR_pread_nocancel         VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(414)
+#define __NR_pwrite_nocancel        VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(415)
+#define __NR_waitid_nocancel        VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(416)
+#define __NR_poll_nocancel          VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(417)
+#define __NR_msgsnd_nocancel        VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(418)
+#define __NR_msgrcv_nocancel        VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(419)
+#define __NR_sem_wait_nocancel      VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(420)
+#define __NR_aio_suspend_nocancel   VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(421)
+#define __NR___sigwait_nocancel     VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(422)
 #define __NR___semwait_signal_nocancel VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(423)
-#define __NR___mac_mount    VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(424)
-#define __NR___mac_get_mount VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(425)
-#define __NR___mac_getfsstat VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(426)
-#define        __NR_MAXSYSCALL     VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(427)
+#define __NR___mac_mount            VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(424)
+#define __NR___mac_get_mount        VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(425)
+#define __NR___mac_getfsstat        VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(426)
+#define        __NR_MAXSYSCALL             VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(427)
 
 #define __NR_DARWIN_FAKE_SIGRETURN (1 + __NR_MAXSYSCALL)
 
index c185b320cadd5e134d278b22476856ff5e61db21..6b8c1c5ecdbb8163b53faf712f4d6c2ec6f68966 100644 (file)
@@ -341,7 +341,12 @@ int main(void)
    SY(__NR_sem_unlink, x0); FAIL;
 
    // __NR_sem_wait 271
+   GO(__NR_sem_wait, "1s 0m");
+   SY(__NR_sem_wait, x0); FAIL;
+
    // __NR_sem_trywait 272
+   GO(__NR_sem_trywait, "1s 0m");
+   SY(__NR_sem_trywait, x0); FAIL;
 
    // __NR_sem_post 273
    GO(__NR_sem_post, "1s 0m");