summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorM Joonas Pihlaja <jpihlaja@cc.helsinki.fi>2010-03-04 04:43:21 +0200
committerM Joonas Pihlaja <jpihlaja@cc.helsinki.fi>2010-03-04 04:43:21 +0200
commitbef554c41fd5cb5e44bfe53b219c5871d795b0bb (patch)
tree602e3fd358900a982ff26b6256c011e65e9eea77
parent0b5579b5d13a6060a3e3eef4bc3b5d9242117d3c (diff)
Add initial support for rwlocks.
-rw-r--r--list.txt16
-rw-r--r--stubs.c72
2 files changed, 80 insertions, 8 deletions
diff --git a/list.txt b/list.txt
index 1a0dba1..867eff8 100644
--- a/list.txt
+++ b/list.txt
@@ -72,19 +72,19 @@ alias("na", [[pthread_mutex_timedlock]])
alias("na", [[pthread_mutex_trylock]])
alias("zero", [[pthread_mutex_unlock]])
alias("na", [[pthread_once]])
-alias("na", [[pthread_rwlockattr_destroy]])
+alias("zero", [[pthread_rwlockattr_destroy]])
alias("na", [[pthread_rwlockattr_getpshared]])
-alias("na", [[pthread_rwlockattr_init]])
-alias("na", [[pthread_rwlockattr_setpshared]])
-alias("na", [[pthread_rwlock_destroy]])
-alias("na", [[pthread_rwlock_init]])
-alias("na", [[pthread_rwlock_rdlock]])
+alias("zero", [[pthread_rwlockattr_init]])
+alias("zero", [[pthread_rwlockattr_setpshared]])
+alias("zero", [[pthread_rwlock_destroy]])
+alias("zero", [[pthread_rwlock_init]])
+alias("zero", [[pthread_rwlock_rdlock]])
alias("na", [[pthread_rwlock_timedrdlock]])
alias("na", [[pthread_rwlock_timedwrlock]])
alias("na", [[pthread_rwlock_tryrdlock]])
alias("na", [[pthread_rwlock_trywrlock]])
-alias("na", [[pthread_rwlock_unlock]])
-alias("na", [[pthread_rwlock_wrlock]])
+alias("zero", [[pthread_rwlock_unlock]])
+alias("zero", [[pthread_rwlock_wrlock]])
alias("zero", [[pthread_self]])
alias("na", [[pthread_setcancelstate]])
alias("na", [[pthread_setcanceltype]])
diff --git a/stubs.c b/stubs.c
index 19338f6..2cd86c9 100644
--- a/stubs.c
+++ b/stubs.c
@@ -336,6 +336,78 @@ int pthread_mutex_unlock() __attribute__ ((weak, alias ("__pthread_zero_stub")))
# endif
#endif
+#ifndef HAVE_PTHREAD_RWLOCKATTR_DESTROY
+#define NEED_ZERO_STUB
+# ifdef SUPPORT_ATTRIBUTE_ALIAS
+int pthread_rwlockattr_destroy() __attribute__ ((weak, alias ("__pthread_zero_stub")));
+# else
+# pragma weak pthread_rwlockattr_destroy = __pthread_zero_stub
+# endif
+#endif
+
+#ifndef HAVE_PTHREAD_RWLOCKATTR_INIT
+#define NEED_ZERO_STUB
+# ifdef SUPPORT_ATTRIBUTE_ALIAS
+int pthread_rwlockattr_init() __attribute__ ((weak, alias ("__pthread_zero_stub")));
+# else
+# pragma weak pthread_rwlockattr_init = __pthread_zero_stub
+# endif
+#endif
+
+#ifndef HAVE_PTHREAD_RWLOCKATTR_SETPSHARED
+#define NEED_ZERO_STUB
+# ifdef SUPPORT_ATTRIBUTE_ALIAS
+int pthread_rwlockattr_setpshared() __attribute__ ((weak, alias ("__pthread_zero_stub")));
+# else
+# pragma weak pthread_rwlockattr_setpshared = __pthread_zero_stub
+# endif
+#endif
+
+#ifndef HAVE_PTHREAD_RWLOCK_DESTROY
+#define NEED_ZERO_STUB
+# ifdef SUPPORT_ATTRIBUTE_ALIAS
+int pthread_rwlock_destroy() __attribute__ ((weak, alias ("__pthread_zero_stub")));
+# else
+# pragma weak pthread_rwlock_destroy = __pthread_zero_stub
+# endif
+#endif
+
+#ifndef HAVE_PTHREAD_RWLOCK_INIT
+#define NEED_ZERO_STUB
+# ifdef SUPPORT_ATTRIBUTE_ALIAS
+int pthread_rwlock_init() __attribute__ ((weak, alias ("__pthread_zero_stub")));
+# else
+# pragma weak pthread_rwlock_init = __pthread_zero_stub
+# endif
+#endif
+
+#ifndef HAVE_PTHREAD_RWLOCK_RDLOCK
+#define NEED_ZERO_STUB
+# ifdef SUPPORT_ATTRIBUTE_ALIAS
+int pthread_rwlock_rdlock() __attribute__ ((weak, alias ("__pthread_zero_stub")));
+# else
+# pragma weak pthread_rwlock_rdlock = __pthread_zero_stub
+# endif
+#endif
+
+#ifndef HAVE_PTHREAD_RWLOCK_UNLOCK
+#define NEED_ZERO_STUB
+# ifdef SUPPORT_ATTRIBUTE_ALIAS
+int pthread_rwlock_unlock() __attribute__ ((weak, alias ("__pthread_zero_stub")));
+# else
+# pragma weak pthread_rwlock_unlock = __pthread_zero_stub
+# endif
+#endif
+
+#ifndef HAVE_PTHREAD_RWLOCK_WRLOCK
+#define NEED_ZERO_STUB
+# ifdef SUPPORT_ATTRIBUTE_ALIAS
+int pthread_rwlock_wrlock() __attribute__ ((weak, alias ("__pthread_zero_stub")));
+# else
+# pragma weak pthread_rwlock_wrlock = __pthread_zero_stub
+# endif
+#endif
+
#ifndef HAVE_PTHREAD_SELF
#define NEED_ZERO_STUB
# ifdef SUPPORT_ATTRIBUTE_ALIAS