Index: fusl/src/thread/tss_create.c |
diff --git a/fusl/src/thread/tss_create.c b/fusl/src/thread/tss_create.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..251d22b9abe524e5e4ac4f9dd9f6a99850fc68e3 |
--- /dev/null |
+++ b/fusl/src/thread/tss_create.c |
@@ -0,0 +1,11 @@ |
+#include <threads.h> |
+ |
+int __pthread_key_create(tss_t *, void (*)(void *)); |
+ |
+int tss_create(tss_t *tss, tss_dtor_t dtor) |
+{ |
+ /* Different error returns are possible. C glues them together into |
+ * just failure notification. Can't be optimized to a tail call, |
+ * unless thrd_error equals EAGAIN. */ |
+ return __pthread_key_create(tss, dtor) ? thrd_error : thrd_success; |
+} |