#include <osreldate.h>
#endif
+#if defined(VGO_darwin)
+#define LIBC_FUNC(ret_ty, f, args...) \
+ ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBSYSTEM_KERNEL_SONAME,f)(args); \
+ ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBSYSTEM_KERNEL_SONAME,f)(args)
+#endif
+
// Do a client request. These are macros rather than a functions so
// as to avoid having an extra frame in stack traces.
return sem_init_WRK(sem, pshared, value);
}
#elif defined(VGO_darwin)
- PTH_FUNC(int, semZuinit, // sem_init
+ LIBC_FUNC(int, semZuinit, // sem_init
sem_t* sem, int pshared, unsigned long value) {
return sem_init_WRK(sem, pshared, value);
}
return sem_destroy_WRK(sem);
}
#elif defined(VGO_darwin)
- PTH_FUNC(int, semZudestroy, // sem_destroy
+ LIBC_FUNC(int, semZudestroy, // sem_destroy
sem_t* sem) {
return sem_destroy_WRK(sem);
}
return sem_wait_WRK(sem);
}
#elif defined(VGO_darwin)
- PTH_FUNC(int, semZuwait, sem_t* sem) { /* sem_wait */
+ LIBC_FUNC(int, semZuwait, sem_t* sem) { /* sem_wait */
return sem_wait_WRK(sem);
}
- PTH_FUNC(int, semZuwaitZDZa, sem_t* sem) { /* sem_wait$* */
+ LIBC_FUNC(int, semZuwaitZDZa, sem_t* sem) { /* sem_wait$* */
return sem_wait_WRK(sem);
}
#elif defined(VGO_freebsd)
return sem_trywait_WRK(sem);
}
#elif defined(VGO_darwin)
-PTH_FUNC(int, semZutrywait, sem_t* sem) { /* sem_trywait */
+LIBC_FUNC(int, semZutrywait, sem_t* sem) { /* sem_trywait */
return sem_trywait_WRK(sem);
}
#elif defined(VGO_freebsd)
return sem_post_WRK(sem);
}
#elif defined(VGO_darwin)
- PTH_FUNC(int, semZupost, sem_t* sem) { /* sem_post */
+ LIBC_FUNC(int, semZupost, sem_t* sem) { /* sem_post */
return sem_post_WRK(sem);
}
#elif defined(VGO_freebsd)
// Solaris: sem_open
// FreeBSD: sem_open
//
-#if defined(VGO_freebsd)
+#if defined(VGO_freebsd) || defined(VGO_DARWIN)
LIBC_FUNC(sem_t*, semZuopen,
const char* name, long oflag,
long mode, unsigned long value)
// darwin: sem_close
// Solaris: sem_close
// FreeBSD: sem_close
-#if defined (VGO_freebsd)
+#if defined (VGO_freebsd) || defined(VGO_darwin)
LIBC_FUNC(int, sem_close, sem_t* sem)
#else
PTH_FUNC(int, sem_close, sem_t* sem)