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