]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add support for private futexes (whatever they might be). Patch from
authorJulian Seward <jseward@acm.org>
Sat, 17 Nov 2007 01:35:08 +0000 (01:35 +0000)
committerJulian Seward <jseward@acm.org>
Sat, 17 Nov 2007 01:35:08 +0000 (01:35 +0000)
Eric Dumazet.  Fixes #146781.

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

coregrind/m_syswrap/syswrap-linux.c
include/vki/vki-linux.h

index 88b160cdd8902da016af882a0c7a6ca737988d99..0d8c90a18066a8c1f9d01c0853126db130a41a61 100644 (file)
@@ -844,21 +844,25 @@ PRE(sys_futex)
    PRINT("sys_futex ( %p, %d, %d, %p, %p )", ARG1,ARG2,ARG3,ARG4,ARG5);
    switch(ARG2) {
    case VKI_FUTEX_CMP_REQUEUE:
+   case VKI_FUTEX_CMP_REQUEUE | VKI_FUTEX_PRIVATE_FLAG:
       PRE_REG_READ6(long, "futex", 
                     vki_u32 *, futex, int, op, int, val,
                     struct timespec *, utime, vki_u32 *, uaddr2, int, val3);
       break;
    case VKI_FUTEX_REQUEUE:
+   case VKI_FUTEX_REQUEUE | VKI_FUTEX_PRIVATE_FLAG:
       PRE_REG_READ5(long, "futex", 
                     vki_u32 *, futex, int, op, int, val,
                     struct timespec *, utime, vki_u32 *, uaddr2);
       break;
    case VKI_FUTEX_WAIT:
+   case VKI_FUTEX_WAIT | VKI_FUTEX_PRIVATE_FLAG:
       PRE_REG_READ4(long, "futex", 
                     vki_u32 *, futex, int, op, int, val,
                     struct timespec *, utime);
       break;
    case VKI_FUTEX_WAKE:
+   case VKI_FUTEX_WAKE | VKI_FUTEX_PRIVATE_FLAG:
    case VKI_FUTEX_FD:
       PRE_REG_READ3(long, "futex", 
                     vki_u32 *, futex, int, op, int, val);
@@ -874,16 +878,20 @@ PRE(sys_futex)
 
    switch(ARG2) {
    case VKI_FUTEX_WAIT:
+   case VKI_FUTEX_WAIT | VKI_FUTEX_PRIVATE_FLAG:
       if (ARG4 != 0)
         PRE_MEM_READ( "futex(timeout)", ARG4, sizeof(struct vki_timespec) );
       break;
 
    case VKI_FUTEX_REQUEUE:
+   case VKI_FUTEX_REQUEUE | VKI_FUTEX_PRIVATE_FLAG:
    case VKI_FUTEX_CMP_REQUEUE:
+   case VKI_FUTEX_CMP_REQUEUE | VKI_FUTEX_PRIVATE_FLAG:
       PRE_MEM_READ( "futex(futex2)", ARG5, sizeof(Int) );
       break;
 
    case VKI_FUTEX_WAKE:
+   case VKI_FUTEX_WAKE | VKI_FUTEX_PRIVATE_FLAG:
    case VKI_FUTEX_FD:
       /* no additional pointers */
       break;
index 1f95bd5800b751d278e8f5faf78ee68f2b3aa840..086b2507b192a6dbce16f518650503f3f0dc4087 100644 (file)
@@ -1151,6 +1151,7 @@ struct  vki_seminfo {
 #define VKI_FUTEX_FD (2)
 #define VKI_FUTEX_REQUEUE (3)
 #define VKI_FUTEX_CMP_REQUEUE (4)
+#define VKI_FUTEX_PRIVATE_FLAG (128)
 
 struct vki_robust_list {
        struct vki_robust_list __user *next;