/* * Copyright 2021 The Emscripten Authors. All rights reserved. * Emscripten is available under two separate licenses, the MIT license and the * University of Illinois/NCSA Open Source License. Both these licenses can be * found in the LICENSE file. */ #include "pthread_impl.h" #include #include static struct pthread __main_pthread; uintptr_t __get_tp(void) { return (uintptr_t)&__main_pthread; } // In case the stub syscall is not linked it static int dummy_getpid() { return 42; } weak_alias(dummy_getpid, __syscall_getpid); pthread_t emscripten_main_runtime_thread_id() { return &__main_pthread; } extern int __stack_high; extern int __stack_low; __attribute__((constructor)) static void init_pthread_self(void) { __main_pthread.tid = getpid(); __main_pthread.stack = &__stack_high; __main_pthread.stack_size = ((size_t)&__stack_high) - ((size_t)&__stack_low); __main_pthread.guard_size = __default_guardsize; }