--- /dev/null
+#ifndef REGTEST
+#include <threads.h>
+#include <pthread.h>
+
+int mtx_init(mtx_t *mtx, int type)
+{
+ if(type == mtx_plain || type == mtx_timed) {
+ if(pthread_mutex_init(mtx, NULL) == 0)
+ return thrd_success;
+ else
+ return thrd_error;
+
+ } else if (type == mtx_recursive || type == (mtx_recursive | mtx_timed)) {
+ int rc = thrd_error;
+ pthread_mutexattr_t attr;
+
+ if(pthread_mutexattr_init(&attr))
+ goto cleanup1;
+
+ if(pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE))
+ goto cleanup2;
+
+ if(pthread_mutex_init(mtx, &attr) == 0)
+ rc = thrd_success;
+
+ cleanup2:
+ pthread_mutexattr_destroy(&attr);
+ cleanup1:
+ return rc;
+ } else {
+ return thrd_error;
+ }
+}
+#endif
+
+#ifdef TEST
+#include <_PDCLIB_test.h>
+
+int main( void )
+{
+ return TEST_RESULTS;
+}
+
+#endif