about summary refs log tree commit diff
path: root/sysdeps/mach/hurd/cthreads.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/mach/hurd/cthreads.c')
-rw-r--r--sysdeps/mach/hurd/cthreads.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/sysdeps/mach/hurd/cthreads.c b/sysdeps/mach/hurd/cthreads.c
new file mode 100644
index 0000000000..c63ae73bb5
--- /dev/null
+++ b/sysdeps/mach/hurd/cthreads.c
@@ -0,0 +1,48 @@
+#include <bits/libc-lock.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* Placeholder for key creation routine from Hurd cthreads library.  */
+int
+weak_function
+cthread_keycreate (key)
+     cthread_key_t *key;
+{
+  __set_errno (ENOSYS);
+ *key = -1;
+  return -1;
+}
+
+/* Placeholder for key retrieval routine from Hurd cthreads library.  */
+int
+weak_function
+cthread_getspecific (key, pval)
+     cthread_key_t key;
+     void **pval;
+{
+  *pval = NULL;
+  __set_errno (ENOSYS);
+  return -1;
+}
+
+/* Placeholder for key setting routine from Hurd cthreads library.  */
+int
+weak_function
+cthread_setspecific (key, val)
+     cthread_key_t key;
+     void *val;
+{
+  __set_errno (ENOSYS);
+  return -1;
+}
+
+/* Call cthread_getspecific which gets a pointer to the return value instead
+   of just returning it.  */
+void *
+__libc_getspecific (key)
+     cthread_key_t key;
+{
+  void *val;
+  cthread_getspecific (key, &val);
+  return val;
+}