14a738ee8SSiva Chandra Reddy //===-- Implementation of the pthread_key_create --------------------------===// 24a738ee8SSiva Chandra Reddy // 34a738ee8SSiva Chandra Reddy // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 44a738ee8SSiva Chandra Reddy // See https://llvm.org/LICENSE.txt for license information. 54a738ee8SSiva Chandra Reddy // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 64a738ee8SSiva Chandra Reddy // 74a738ee8SSiva Chandra Reddy //===----------------------------------------------------------------------===// 84a738ee8SSiva Chandra Reddy 94a738ee8SSiva Chandra Reddy #include "pthread_key_create.h" 104a738ee8SSiva Chandra Reddy 114a738ee8SSiva Chandra Reddy #include "src/__support/common.h" 125ff3ff33SPetr Hosek #include "src/__support/macros/config.h" 134a738ee8SSiva Chandra Reddy #include "src/__support/threads/thread.h" 14*46944b0cSJob Henandez Lara #include "src/errno/libc_errno.h" 154a738ee8SSiva Chandra Reddy 164a738ee8SSiva Chandra Reddy #include <pthread.h> 174a738ee8SSiva Chandra Reddy 185ff3ff33SPetr Hosek namespace LIBC_NAMESPACE_DECL { 194a738ee8SSiva Chandra Reddy 204a738ee8SSiva Chandra Reddy LLVM_LIBC_FUNCTION(int, pthread_key_create, 214a738ee8SSiva Chandra Reddy (pthread_key_t * key, __pthread_tss_dtor_t dtor)) { 22b6bc9d72SGuillaume Chatelet auto k = LIBC_NAMESPACE::new_tss_key(dtor); 234a738ee8SSiva Chandra Reddy if (!k) 244a738ee8SSiva Chandra Reddy return EINVAL; 254a738ee8SSiva Chandra Reddy *key = *k; 264a738ee8SSiva Chandra Reddy return 0; 274a738ee8SSiva Chandra Reddy } 284a738ee8SSiva Chandra Reddy 295ff3ff33SPetr Hosek } // namespace LIBC_NAMESPACE_DECL 30