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_key_create(rte_thread_key *key, void (*destructor)(void *))
24 *key = malloc(sizeof(**key));
26 RTE_LOG(DEBUG, EAL, "Cannot allocate TLS key.\n");
30 err = pthread_key_create(&((*key)->thread_index), destructor);
32 RTE_LOG(DEBUG, EAL, "pthread_key_create failed: %s\n",
42 rte_thread_key_delete(rte_thread_key key)
47 RTE_LOG(DEBUG, EAL, "Invalid TLS key.\n");
51 err = pthread_key_delete(key->thread_index);
53 RTE_LOG(DEBUG, EAL, "pthread_key_delete failed: %s\n",
64 rte_thread_value_set(rte_thread_key key, const void *value)
69 RTE_LOG(DEBUG, EAL, "Invalid TLS key.\n");
73 err = pthread_setspecific(key->thread_index, value);
75 RTE_LOG(DEBUG, EAL, "pthread_setspecific failed: %s\n",
84 rte_thread_value_get(rte_thread_key key)
87 RTE_LOG(DEBUG, EAL, "Invalid TLS key.\n");
91 return pthread_getspecific(key->thread_index);