AK/StackInfo: Add support for OpenBSD pthreads

This commit is contained in:
nipos 2023-02-19 10:24:05 +01:00 committed by Andreas Kling
parent 85287fcc1e
commit c42e949f5b
Notes: sideshowbarker 2024-07-19 16:56:54 +09:00

View file

@ -14,7 +14,7 @@
# include <serenity.h>
#elif defined(AK_OS_LINUX) or defined(AK_OS_MACOS)
# include <pthread.h>
#elif defined(AK_OS_FREEBSD)
#elif defined(AK_OS_FREEBSD) or defined(AK_OS_OPENBSD)
# include <pthread.h>
# include <pthread_np.h>
#endif
@ -67,6 +67,16 @@ StackInfo::StackInfo()
m_size = eight_megabytes;
}
m_base = top_of_stack - m_size;
#elif defined(AK_OS_OPENBSD)
int rc;
stack_t thread_stack;
if ((rc = pthread_stackseg_np(pthread_self(), &thread_stack)) != 0) {
fprintf(stderr, "pthread_stackseg_np: %s\n", strerror(rc));
VERIFY_NOT_REACHED();
}
FlatPtr top_of_stack = (FlatPtr)thread_stack.ss_sp;
m_size = (size_t)thread_stack.ss_size;
m_base = top_of_stack - m_size;
#else
# pragma message "StackInfo not supported on this platform! Recursion checks and stack scans may not work properly"
m_size = (size_t)~0;