VectorNav C Library
criticalsection.h
Go to the documentation of this file.
1 
7 #ifndef _VN_CRITICALSECTION_H_
8 #define _VN_CRITICALSECTION_H_
9 
10 #include "vn/error.h"
11 
12 #ifdef _WIN32
13 
14  /* Disable some warnings for Visual Studio with -Wall. */
15  #if defined(_MSC_VER)
16  #pragma warning(push)
17  #pragma warning(disable:4668)
18  #pragma warning(disable:4820)
19  #pragma warning(disable:4255)
20  #endif
21 
22  #include <Windows.h>
23 
24  #if defined(_MSC_VER)
25  #pragma warning(pop)
26  #endif
27 
28 #endif
29 
30 #if (defined __linux__ || defined __APPLE__ || defined __CYGWIN__ || defined __QNXNTO__)
31  #include <pthread.h>
32 #endif
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 typedef struct
39 {
40  #if _WIN32
41  CRITICAL_SECTION handle;
42  #elif __linux__ || __APPLE__ || __CYGWIN__ || __QNXNTO__
43  pthread_mutex_t handle;
44  #else
45  #error "Unknown System"
46  #endif
48 
53 VnError VnCriticalSection_initialize(VnCriticalSection *criticalSection);
54 
59 VnError VnCriticalSection_deinitialize(VnCriticalSection *criticalSection);
60 
65 VnError VnCriticalSection_enter(VnCriticalSection *criticalSection);
66 
71 VnError VnCriticalSection_leave(VnCriticalSection *criticalSection);
72 
73 #ifdef __cplusplus
74 }
75 #endif
76 
77 #endif
VnError VnCriticalSection_leave(VnCriticalSection *criticalSection)
Leave a critical section.
VnError VnCriticalSection_initialize(VnCriticalSection *criticalSection)
VnError VnCriticalSection_deinitialize(VnCriticalSection *criticalSection)
Disposes of a VnCriticalSection structure and associated resources.
Definition: criticalsection.h:38
VnError VnCriticalSection_enter(VnCriticalSection *criticalSection)
Attempt to enter a critical section.