1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2021 Mellanox Technologies, Ltd
10 #include <rte_errno.h>
12 #include <rte_thread.h>
15 pthread_key_t thread_index;
19 rte_thread_key_create(rte_thread_key *key, void (*destructor)(void *))
23 *key = malloc(sizeof(**key));
25 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",
41 rte_thread_key_delete(rte_thread_key key)
46 RTE_LOG(DEBUG, EAL, "Invalid TLS key.\n");
50 err = pthread_key_delete(key->thread_index);
52 RTE_LOG(DEBUG, EAL, "pthread_key_delete failed: %s\n",
63 rte_thread_value_set(rte_thread_key key, const void *value)
68 RTE_LOG(DEBUG, EAL, "Invalid TLS key.\n");
72 err = pthread_setspecific(key->thread_index, value);
74 RTE_LOG(DEBUG, EAL, "pthread_setspecific failed: %s\n",
83 rte_thread_value_get(rte_thread_key key)
86 RTE_LOG(DEBUG, EAL, "Invalid TLS key.\n");
90 return pthread_getspecific(key->thread_index);