Zycore
1.5.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
Synchronization.h
Go to the documentation of this file.
1
/***************************************************************************************************
2
3
Zyan Core Library (Zycore-C)
4
5
Original Author : Florian Bernd
6
7
* Permission is hereby granted, free of charge, to any person obtaining a copy
8
* of this software and associated documentation files (the "Software"), to deal
9
* in the Software without restriction, including without limitation the rights
10
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
* copies of the Software, and to permit persons to whom the Software is
12
* furnished to do so, subject to the following conditions:
13
*
14
* The above copyright notice and this permission notice shall be included in all
15
* copies or substantial portions of the Software.
16
*
17
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
* SOFTWARE.
24
25
***************************************************************************************************/
26
31
32
#ifndef ZYCORE_API_SYNCHRONIZATION_H
33
#define ZYCORE_API_SYNCHRONIZATION_H
34
35
#include <
Zycore/Defines.h
>
36
#include <
Zycore/Status.h
>
37
38
#ifndef ZYAN_NO_LIBC
39
40
#ifdef __cplusplus
41
extern
"C"
{
42
#endif
43
44
/* ============================================================================================== */
45
/* Enums and types */
46
/* ============================================================================================== */
47
48
#if defined(ZYAN_POSIX)
49
50
#include <pthread.h>
51
52
/* ---------------------------------------------------------------------------------------------- */
53
/* Critical Section */
54
/* ---------------------------------------------------------------------------------------------- */
55
56
typedef
pthread_mutex_t ZyanCriticalSection;
57
58
/* ---------------------------------------------------------------------------------------------- */
59
60
#elif defined(ZYAN_WINDOWS)
61
62
#include <windows.h>
63
64
/* ---------------------------------------------------------------------------------------------- */
65
/* Critical Section */
66
/* ---------------------------------------------------------------------------------------------- */
67
68
typedef
CRITICAL_SECTION ZyanCriticalSection;
69
70
/* ---------------------------------------------------------------------------------------------- */
71
72
#else
73
# error "Unsupported platform detected"
74
#endif
75
76
/* ============================================================================================== */
77
/* Exported functions */
78
/* ============================================================================================== */
79
80
/* ---------------------------------------------------------------------------------------------- */
81
/* Critical Section */
82
/* ---------------------------------------------------------------------------------------------- */
83
89
ZYCORE_EXPORT
ZyanStatus
ZyanCriticalSectionInitialize
(ZyanCriticalSection* critical_section);
90
96
ZYCORE_EXPORT
ZyanStatus
ZyanCriticalSectionEnter
(ZyanCriticalSection* critical_section);
97
106
ZYCORE_EXPORT
ZyanBool
ZyanCriticalSectionTryEnter
(ZyanCriticalSection* critical_section);
107
113
ZYCORE_EXPORT
ZyanStatus
ZyanCriticalSectionLeave
(ZyanCriticalSection* critical_section);
114
120
ZYCORE_EXPORT
ZyanStatus
ZyanCriticalSectionDelete
(ZyanCriticalSection* critical_section);
121
122
/* ---------------------------------------------------------------------------------------------- */
123
124
/* ============================================================================================== */
125
126
#ifdef __cplusplus
127
}
128
#endif
129
130
#endif
/* ZYAN_NO_LIBC */
131
132
#endif
/* ZYCORE_API_SYNCHRONIZATION_H */
Defines.h
ZYCORE_EXPORT
#define ZYCORE_EXPORT
Definition
Defines.h:235
Status.h
ZyanStatus
ZyanU32 ZyanStatus
Definition
Status.h:48
ZyanCriticalSectionTryEnter
ZYCORE_EXPORT ZyanBool ZyanCriticalSectionTryEnter(ZyanCriticalSection *critical_section)
ZyanCriticalSectionDelete
ZYCORE_EXPORT ZyanStatus ZyanCriticalSectionDelete(ZyanCriticalSection *critical_section)
ZyanCriticalSectionLeave
ZYCORE_EXPORT ZyanStatus ZyanCriticalSectionLeave(ZyanCriticalSection *critical_section)
ZyanCriticalSectionInitialize
ZYCORE_EXPORT ZyanStatus ZyanCriticalSectionInitialize(ZyanCriticalSection *critical_section)
ZyanCriticalSectionEnter
ZYCORE_EXPORT ZyanStatus ZyanCriticalSectionEnter(ZyanCriticalSection *critical_section)
ZyanBool
ZyanU8 ZyanBool
Definition
Types.h:296
include
Zycore
API
Synchronization.h
Generated by
1.17.0