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