diff --git a/userspace/libraries/LibC/include/pthread.h b/userspace/libraries/LibC/include/pthread.h index c4801805..30f911a0 100644 --- a/userspace/libraries/LibC/include/pthread.h +++ b/userspace/libraries/LibC/include/pthread.h @@ -29,8 +29,6 @@ struct uthread #define PTHREAD_CANCEL_DEFERRED 4 #define PTHREAD_CANCEL_DISABLE 5 #define PTHREAD_CANCELED 6 -#define PTHREAD_CREATE_DETACHED 7 -#define PTHREAD_CREATE_JOINABLE 8 #define PTHREAD_EXPLICIT_SCHED 9 #define PTHREAD_INHERIT_SCHED 10 #define PTHREAD_PRIO_INHERIT 18 @@ -39,6 +37,9 @@ struct uthread #define PTHREAD_SCOPE_PROCESS 23 #define PTHREAD_SCOPE_SYSTEM 24 +#define PTHREAD_CREATE_DETACHED 1 +#define PTHREAD_CREATE_JOINABLE 0 + #define PTHREAD_BARRIER_SERIAL_THREAD 1 #define PTHREAD_ONCE_INIT 0 diff --git a/userspace/libraries/LibC/pthread.cpp b/userspace/libraries/LibC/pthread.cpp index 87b6125d..16541660 100644 --- a/userspace/libraries/LibC/pthread.cpp +++ b/userspace/libraries/LibC/pthread.cpp @@ -187,6 +187,28 @@ int pthread_attr_setstacksize(pthread_attr_t* attr, size_t stacksize) return 0; } +int pthread_attr_getdetachstate(const pthread_attr_t* attr, int* detachstate) +{ + (void)attr; + *detachstate = PTHREAD_CREATE_JOINABLE; + return 0; +} + +int pthread_attr_setdetachstate(pthread_attr_t* attr, int detachstate) +{ + (void)attr; + switch (detachstate) + { + case PTHREAD_CREATE_DETACHED: + dwarnln("TODO: pthread_attr_setdetachstate"); + return ENOTSUP; + case PTHREAD_CREATE_JOINABLE: + return 0; + default: + return EINVAL; + } +} + int pthread_create(pthread_t* __restrict thread_id, const pthread_attr_t* __restrict attr, void* (*start_routine)(void*), void* __restrict arg) { auto* info = static_cast(malloc(sizeof(pthread_trampoline_info_t)));