15af785ecSfengbojiang(姜凤波) /*
2*d30ea906Sjfb8856606  * SPDX-License-Identifier: BSD-3-Clause
3*d30ea906Sjfb8856606  * Copyright 2015 Intel Corporation.
4*d30ea906Sjfb8856606  * Copyright 2012 Hasan Alayli <[email protected]>
55af785ecSfengbojiang(姜凤波)  */
6a9643ea8Slogwang #ifndef LTHREAD_H_
7a9643ea8Slogwang #define LTHREAD_H_
8a9643ea8Slogwang 
92bfe3f2eSlogwang #ifdef __cplusplus
102bfe3f2eSlogwang extern "C" {
112bfe3f2eSlogwang #endif
122bfe3f2eSlogwang 
13a9643ea8Slogwang #include <rte_per_lcore.h>
14a9643ea8Slogwang 
15a9643ea8Slogwang #include "lthread_api.h"
16a9643ea8Slogwang #include "lthread_diag.h"
17a9643ea8Slogwang 
18a9643ea8Slogwang struct lthread;
19a9643ea8Slogwang struct lthread_sched;
20a9643ea8Slogwang 
21a9643ea8Slogwang /* function to be called when a context function returns */
22a9643ea8Slogwang typedef void (*lthread_exit_func) (struct lthread *);
23a9643ea8Slogwang 
24a9643ea8Slogwang void _lthread_exit_handler(struct lthread *lt);
25a9643ea8Slogwang 
26a9643ea8Slogwang void lthread_set_funcname(const char *f);
27a9643ea8Slogwang 
28a9643ea8Slogwang void _lthread_sched_busy_sleep(struct lthread *lt, uint64_t nsecs);
29a9643ea8Slogwang 
30a9643ea8Slogwang int _lthread_desched_sleep(struct lthread *lt);
31a9643ea8Slogwang 
32a9643ea8Slogwang void _lthread_free(struct lthread *lt);
33a9643ea8Slogwang 
342bfe3f2eSlogwang struct lthread_sched *_lthread_sched_get(unsigned int lcore_id);
35a9643ea8Slogwang 
36a9643ea8Slogwang struct lthread_stack *_stack_alloc(void);
37a9643ea8Slogwang 
38a9643ea8Slogwang struct
39a9643ea8Slogwang lthread_sched *_lthread_sched_create(size_t stack_size);
40a9643ea8Slogwang 
41a9643ea8Slogwang void
42a9643ea8Slogwang _lthread_init(struct lthread *lt,
43a9643ea8Slogwang 	      lthread_func_t fun, void *arg, lthread_exit_func exit_handler);
44a9643ea8Slogwang 
45a9643ea8Slogwang void _lthread_set_stack(struct lthread *lt, void *stack, size_t stack_size);
46a9643ea8Slogwang 
472bfe3f2eSlogwang #ifdef __cplusplus
482bfe3f2eSlogwang }
492bfe3f2eSlogwang #endif
502bfe3f2eSlogwang 
51a9643ea8Slogwang #endif				/* LTHREAD_H_ */
52