# error "Unsupported OS"
#endif
+static Bool in_pthread_rwlock_timedrdlock_WRK = False;
//-----------------------------------------------------------
// glibc: pthread_rwlock_timedrdlock
pthread_rwlock_t *, rwlock,
long, 0/*isW*/, long, 0/*isTryLock*/);
+ in_pthread_rwlock_timedrdlock_WRK = True;
CALL_FN_W_WW(ret, fn, rwlock, timeout);
+ in_pthread_rwlock_timedrdlock_WRK = False;
DO_CREQ_v_WWW(_VG_USERREQ__HG_PTHREAD_RWLOCK_LOCK_POST,
pthread_rwlock_t *, rwlock, long, 0/*isW*/,
fprintf(stderr, "<< pthread_rwl_clockrdl %p", rwlock); fflush(stderr);
}
- DO_CREQ_v_WWW(_VG_USERREQ__HG_PTHREAD_RWLOCK_LOCK_PRE,
- pthread_rwlock_t *, rwlock,
- long, 0/*isW*/, long, 0/*isTryLock*/);
+ if (!in_pthread_rwlock_timedrdlock_WRK) {
+ DO_CREQ_v_WWW(_VG_USERREQ__HG_PTHREAD_RWLOCK_LOCK_PRE,
+ pthread_rwlock_t *, rwlock,
+ long, 0/*isW*/, long, 0/*isTryLock*/);
+ }
CALL_FN_W_WWW(ret, fn, rwlock, clockid, timeout);
- DO_CREQ_v_WWW(_VG_USERREQ__HG_PTHREAD_RWLOCK_LOCK_POST,
- pthread_rwlock_t *, rwlock, long, 0/*isW*/,
- long, (ret == 0) ? True : False);
+ if (!in_pthread_rwlock_timedrdlock_WRK) {
+ DO_CREQ_v_WWW(_VG_USERREQ__HG_PTHREAD_RWLOCK_LOCK_POST,
+ pthread_rwlock_t *, rwlock, long, 0/*isW*/,
+ long, (ret == 0) ? True : False);
+ }
if (ret != 0) {
DO_PthAPIerror("pthread_rwlock_clockrdlock", ret);
}
}
#endif
+static Bool in_pthread_rwlock_timedwrlock_WRK = False;
//-----------------------------------------------------------
// glibc: pthread_rwlock_timedwrlock
pthread_rwlock_t *, rwlock,
long, 1/*isW*/, long, 0/*isTryLock*/);
+ in_pthread_rwlock_timedwrlock_WRK = True;
CALL_FN_W_WW(ret, fn, rwlock, timeout);
+ in_pthread_rwlock_timedwrlock_WRK = False;
DO_CREQ_v_WWW(_VG_USERREQ__HG_PTHREAD_RWLOCK_LOCK_POST,
pthread_rwlock_t *, rwlock, long, 1/*isW*/,
#if defined(VGO_linux) || defined(VGO_solaris)
//-----------------------------------------------------------
// glibc: pthread_rwlock_clockwrlock
+// Illumos: pthread_rwlock_clockwrlock
//
__attribute__((noinline)) __attribute__((unused))
static int pthread_rwlock_clockwrlock_WRK(pthread_rwlock_t *rwlock,
fprintf(stderr, "<< pthread_rwl_clockwrl %p", rwlock); fflush(stderr);
}
- DO_CREQ_v_WWW(_VG_USERREQ__HG_PTHREAD_RWLOCK_LOCK_PRE,
- pthread_rwlock_t *, rwlock,
- long, 1/*isW*/, long, 0/*isTryLock*/);
+ if (!in_pthread_rwlock_timedwrlock_WRK) {
+ DO_CREQ_v_WWW(_VG_USERREQ__HG_PTHREAD_RWLOCK_LOCK_PRE,
+ pthread_rwlock_t *, rwlock,
+ long, 1/*isW*/, long, 0/*isTryLock*/);
+ }
CALL_FN_W_WWW(ret, fn, rwlock, clockid, timeout);
- DO_CREQ_v_WWW(_VG_USERREQ__HG_PTHREAD_RWLOCK_LOCK_POST,
- pthread_rwlock_t *, rwlock, long, 1/*isW*/,
- long, (ret == 0) ? True : False);
+ if (!in_pthread_rwlock_timedwrlock_WRK) {
+ DO_CREQ_v_WWW(_VG_USERREQ__HG_PTHREAD_RWLOCK_LOCK_POST,
+ pthread_rwlock_t *, rwlock, long, 1/*isW*/,
+ long, (ret == 0) ? True : False);
+ }
if (ret != 0) {
DO_PthAPIerror("pthread_rwlock_clockwrlock", ret);
}