1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2021 Mellanox Technologies, Ltd
10 #include <rte_common.h>
11 #include <rte_errno.h>
13 #include <rte_thread.h>
16 pthread_key_t thread_index;
20 rte_thread_tls_key_create(rte_tls_key *key, void (*destructor)(void *))
24 *key = malloc(sizeof(**key));
26 RTE_LOG(DEBUG, EAL, "Cannot allocate TLS key.\n");
29 err = pthread_key_create(&((*key)->thread_index), destructor);
31 RTE_LOG(DEBUG, EAL, "pthread_key_create failed: %s\n",
40 rte_thread_tls_key_delete(rte_tls_key key)
45 RTE_LOG(DEBUG, EAL, "Invalid TLS key.\n");
48 err = pthread_key_delete(key->thread_index);
50 RTE_LOG(DEBUG, EAL, "pthread_key_delete failed: %s\n",
60 rte_thread_tls_value_set(rte_tls_key key, const void *value)
65 RTE_LOG(DEBUG, EAL, "Invalid TLS key.\n");
68 err = pthread_setspecific(key->thread_index, value);
70 RTE_LOG(DEBUG, EAL, "pthread_setspecific failed: %s\n",
78 rte_thread_tls_value_get(rte_tls_key key)
81 RTE_LOG(DEBUG, EAL, "Invalid TLS key.\n");
85 return pthread_getspecific(key->thread_index);