1*d30ea906Sjfb8856606 /* SPDX-License-Identifier: BSD-3-Clause 2*d30ea906Sjfb8856606 * Copyright(c) 2015 Intel Corporation 3a9643ea8Slogwang */ 4a9643ea8Slogwang 5a9643ea8Slogwang #ifndef LTHREAD_TLS_H_ 6a9643ea8Slogwang #define LTHREAD_TLS_H_ 7a9643ea8Slogwang 82bfe3f2eSlogwang #ifdef __cplusplus 92bfe3f2eSlogwang extern "C" { 102bfe3f2eSlogwang #endif 112bfe3f2eSlogwang 12a9643ea8Slogwang #include "lthread_api.h" 13a9643ea8Slogwang 14a9643ea8Slogwang #define RTE_PER_LTHREAD_SECTION_SIZE \ 15a9643ea8Slogwang (&__stop_per_lt - &__start_per_lt) 16a9643ea8Slogwang 17a9643ea8Slogwang struct lthread_key { 18a9643ea8Slogwang tls_destructor_func destructor; 19a9643ea8Slogwang }; 20a9643ea8Slogwang 21a9643ea8Slogwang struct lthread_tls { 22a9643ea8Slogwang void *data[LTHREAD_MAX_KEYS]; 23a9643ea8Slogwang int nb_keys_inuse; 24a9643ea8Slogwang struct lthread_sched *root_sched; 25a9643ea8Slogwang }; 26a9643ea8Slogwang 27a9643ea8Slogwang void _lthread_tls_destroy(struct lthread *lt); 28a9643ea8Slogwang void _lthread_key_pool_init(void); 29a9643ea8Slogwang void _lthread_tls_alloc(struct lthread *lt); 30a9643ea8Slogwang 312bfe3f2eSlogwang #ifdef __cplusplus 322bfe3f2eSlogwang } 332bfe3f2eSlogwang #endif 34a9643ea8Slogwang 35a9643ea8Slogwang #endif /* LTHREAD_TLS_H_ */ 36