} pthread_user_data_internal_t;
pthread_user_data_internal_t* pthread_user_data_internal(pthread_t thread);
+int pthread_user_data_lock();
+int pthread_user_data_unlock();
#endif //__PTHREAD_EXTRA_INTERNAL
void** pthread_user_data_ptr(pthread_t thread);
void* pthread_user_data_get(pthread_t thread);
void pthread_user_data_set(pthread_t thread, void *usr);
void pthread_user_data_cleanup(void * arg);
+int pthread_user_data_internal_iterate(int (*routine)(pthread_t), void *arg);
// Pausing
void pthread_pause_disable();
int pthread_pause(pthread_t thread);
int pthread_unpause(pthread_t thread);
+int pthread_pause_all();
+int pthread_unpause_all();
int pthread_pause_reschedule(pthread_t thread);
int pthread_extra_yield();
+// Pause compatible sleeps
+
+void pthread_nanosleep(struct timespec t);
+void pthread_nsleep(time_t s, long ns);
+void pthread_sleep(time_t s);
+
// Message queues
//Flags