From 96bb99f270e6100dd11cdb11b09ad1873fe7f952 Mon Sep 17 00:00:00 2001 From: Suanming Mou Date: Thu, 15 Oct 2020 09:07:46 +0800 Subject: [PATCH] eal/windows: add pthread mutex Add pthread mutex lock as it is needed for the thread safe rte_flow functions. Signed-off-by: Suanming Mou Tested-by: Tal Shnaiderman Acked-by: Dmitry Kozlyuk Acked-by: Ranjit Menon Acked-by: Narcisa Vasile --- lib/librte_eal/windows/include/pthread.h | 33 ++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/lib/librte_eal/windows/include/pthread.h b/lib/librte_eal/windows/include/pthread.h index a4ab4d0945..fb11a07ce6 100644 --- a/lib/librte_eal/windows/include/pthread.h +++ b/lib/librte_eal/windows/include/pthread.h @@ -28,6 +28,10 @@ typedef uintptr_t pthread_t; /* defining pthread_attr_t type on Windows since there is no in Microsoft libc*/ typedef void *pthread_attr_t; +typedef void *pthread_mutexattr_t; + +typedef CRITICAL_SECTION pthread_mutex_t; + typedef SYNCHRONIZATION_BARRIER pthread_barrier_t; #define pthread_barrier_init(barrier, attr, count) \ @@ -146,6 +150,35 @@ pthread_join(__rte_unused pthread_t thread, return 0; } +static inline int +pthread_mutex_init(pthread_mutex_t *mutex, + __rte_unused pthread_mutexattr_t *attr) +{ + InitializeCriticalSection(mutex); + return 0; +} + +static inline int +pthread_mutex_lock(pthread_mutex_t *mutex) +{ + EnterCriticalSection(mutex); + return 0; +} + +static inline int +pthread_mutex_unlock(pthread_mutex_t *mutex) +{ + LeaveCriticalSection(mutex); + return 0; +} + +static inline int +pthread_mutex_destroy(pthread_mutex_t *mutex) +{ + DeleteCriticalSection(mutex); + return 0; +} + #ifdef __cplusplus } #endif -- 2.20.1