1*d30ea906Sjfb8856606 /* SPDX-License-Identifier: BSD-3-Clause
2*d30ea906Sjfb8856606  * Copyright(c) 2015 Intel Corporation
3a9643ea8Slogwang  */
4a9643ea8Slogwang 
5a9643ea8Slogwang 
6a9643ea8Slogwang #ifndef LTHREAD_MUTEX_H_
7a9643ea8Slogwang #define LTHREAD_MUTEX_H_
8a9643ea8Slogwang 
92bfe3f2eSlogwang #ifdef __cplusplus
102bfe3f2eSlogwang extern "C" {
112bfe3f2eSlogwang #endif
122bfe3f2eSlogwang 
13a9643ea8Slogwang #include "lthread_queue.h"
14a9643ea8Slogwang 
15a9643ea8Slogwang 
16a9643ea8Slogwang #define MAX_MUTEX_NAME_SIZE 64
17a9643ea8Slogwang 
18a9643ea8Slogwang struct lthread_mutex {
19a9643ea8Slogwang 	struct lthread *owner;
20a9643ea8Slogwang 	rte_atomic64_t	count;
21a9643ea8Slogwang 	struct lthread_queue *blocked __rte_cache_aligned;
22a9643ea8Slogwang 	struct lthread_sched *root_sched;
23a9643ea8Slogwang 	char			name[MAX_MUTEX_NAME_SIZE];
24a9643ea8Slogwang 	uint64_t		diag_ref; /* optional ref to user diag data */
25a9643ea8Slogwang } __rte_cache_aligned;
26a9643ea8Slogwang 
272bfe3f2eSlogwang #ifdef __cplusplus
282bfe3f2eSlogwang }
292bfe3f2eSlogwang #endif
302bfe3f2eSlogwang 
31a9643ea8Slogwang #endif /* LTHREAD_MUTEX_H_ */
32