18dc42802SSiva Chandra Reddy //===-- Implementation of the pthread_join function -----------------------===// 270c8d12bSSiva Chandra Reddy // 370c8d12bSSiva Chandra Reddy // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 470c8d12bSSiva Chandra Reddy // See https://llvm.org/LICENSE.txt for license information. 570c8d12bSSiva Chandra Reddy // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 670c8d12bSSiva Chandra Reddy // 770c8d12bSSiva Chandra Reddy //===----------------------------------------------------------------------===// 870c8d12bSSiva Chandra Reddy 970c8d12bSSiva Chandra Reddy #include "pthread_join.h" 1070c8d12bSSiva Chandra Reddy 1170c8d12bSSiva Chandra Reddy #include "src/__support/common.h" 12*5ff3ff33SPetr Hosek #include "src/__support/macros/config.h" 1370c8d12bSSiva Chandra Reddy #include "src/__support/threads/thread.h" 1470c8d12bSSiva Chandra Reddy 1570c8d12bSSiva Chandra Reddy #include <pthread.h> // For pthread_* type definitions. 1670c8d12bSSiva Chandra Reddy 17*5ff3ff33SPetr Hosek namespace LIBC_NAMESPACE_DECL { 1870c8d12bSSiva Chandra Reddy 19b6bc9d72SGuillaume Chatelet static_assert(sizeof(pthread_t) == sizeof(LIBC_NAMESPACE::Thread), 20f4580c6dSSiva Chandra Reddy "Mismatch between pthread_t and internal Thread."); 2170c8d12bSSiva Chandra Reddy 2270c8d12bSSiva Chandra Reddy LLVM_LIBC_FUNCTION(int, pthread_join, (pthread_t th, void **retval)) { 23f4580c6dSSiva Chandra Reddy auto *thread = reinterpret_cast<Thread *>(&th); 2470c8d12bSSiva Chandra Reddy int result = thread->join(retval); 2570c8d12bSSiva Chandra Reddy return result; 2670c8d12bSSiva Chandra Reddy } 2770c8d12bSSiva Chandra Reddy 28*5ff3ff33SPetr Hosek } // namespace LIBC_NAMESPACE_DECL 29