From 08f5833ca8fd594ba1b7f34754c815d6b11e81e3 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Tue, 15 Apr 2025 23:19:55 +0300 Subject: [PATCH] Kernel/LibC: Implement pthread_attr_init --- kernel/kernel/Process.cpp | 10 +++++++--- userspace/libraries/LibC/pthread.cpp | 6 ++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/kernel/kernel/Process.cpp b/kernel/kernel/Process.cpp index b49bfea1..64a8a1c6 100644 --- a/kernel/kernel/Process.cpp +++ b/kernel/kernel/Process.cpp @@ -2051,10 +2051,14 @@ namespace Kernel BAN::ErrorOr Process::sys_pthread_create(const pthread_attr_t* attr, void (*entry)(void*), void* arg) { - if (attr != nullptr) + if (attr) { - dwarnln("pthread attr not supported"); - return BAN::Error::from_errno(ENOTSUP); + TRY(validate_pointer_access(attr, sizeof(*attr), false)); + if (*attr) + { + dwarnln("pthread attr not supported"); + return BAN::Error::from_errno(ENOTSUP); + } } LockGuard _(m_process_lock); diff --git a/userspace/libraries/LibC/pthread.cpp b/userspace/libraries/LibC/pthread.cpp index f309fa50..6318e20d 100644 --- a/userspace/libraries/LibC/pthread.cpp +++ b/userspace/libraries/LibC/pthread.cpp @@ -80,6 +80,12 @@ void pthread_cleanup_push(void (*routine)(void*), void* arg) s_cleanup_stack = cleanup; } +int pthread_attr_init(pthread_attr_t* attr) +{ + *attr = 0; + return 0; +} + 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)));