53
53
54
54
#pragma once
55
55
56
- #if !defined(ESIF_ATTR_KERNEL ) && !defined(ESIF_ATTR_USER )
57
- /* User Mode Build */
58
- #define ESIF_ATTR_USER
59
- #endif
60
56
61
- #if defined(_WIN32 )
62
- #if !defined(ESIF_ATTR_OS_WINDOWS )
63
- /* Windows OS */
64
- #define ESIF_ATTR_OS_WINDOWS
65
- #endif
66
- #else
67
- #if !defined(ESIF_ATTR_OS_LINUX ) && !defined(ESIF_ATTR_OS_CHROME ) && !defined(ESIF_ATTR_OS_ANDROID )
68
- /* Linux Derived OS */
69
- #define ESIF_ATTR_OS_LINUX
70
- #endif
71
- #endif
72
57
73
58
#ifdef ESIF_ATTR_OS_CHROME
74
59
/* Linux Derived OS */
75
60
#define ESIF_ATTR_OS_LINUX
76
61
#define ESIF_ATTR_OS "Chrome" /* OS Is Chromium */
77
62
#endif
78
- #ifdef ESIF_ATTR_OS_ANDROID
79
- /* Linux Derived OS */
80
- #define ESIF_ATTR_OS_LINUX
81
- #define ESIF_ATTR_OS "Android" /* OS Is Android */
82
- #endif
83
63
#if defined(ESIF_ATTR_OS_LINUX ) && !defined(_GNU_SOURCE )
84
64
/* -std=gnu99 support */
85
65
#define _GNU_SOURCE
90
70
#endif
91
71
92
72
/* OS Agnostic */
93
- #ifdef ESIF_ATTR_USER
94
73
#include <stdio.h>
95
74
#include <stdlib.h>
96
- #else
97
- #include <stddef.h>
98
- #endif
99
-
100
- #ifdef ESIF_ATTR_OS_WINDOWS
101
-
102
- /* Windows OS */
103
- #pragma strict_gs_check(on)
104
-
105
- #ifdef ESIF_ATTR_USER
106
- #define _WINSOCKAPI_ /* Override for Winsock */
107
- #include <windows.h>
108
-
109
- /* Avoids Serialization Warnings*/
110
- #define ESIF_SERIAL_FENCE () _mm_lfence()
111
-
112
- #else
113
- #include <ntddk.h>
114
- #define INVALID_HANDLE_VALUE ((HANDLE)(LONG_PTR)-1) /* Invalid ESIF Handle */
115
- #endif
116
-
117
- /* Add Linux Base Types for Windows */
118
- typedef unsigned char u8 ; /* A BYTE */
119
- typedef unsigned short u16 ; /* A WORD */
120
- typedef unsigned int u32 ; /* A DWORD */
121
- typedef unsigned long long u64 ; /* A QWORD */
122
-
123
- typedef char * esif_string ; /* NULL-teriminated ANSI string */
124
- typedef HANDLE esif_os_handle_t ;/* opaque OS Handle (not a pointer) */
125
- typedef u64 esif_handle_t ; /* opaque ESIF 64-bit handle (may NOT be a pointer) */
126
- typedef u64 esif_context_t ; /* opaque ESIF 64-bit context (may be a pointer) */
127
-
128
- #define ESIF_ATTR_OS "Windows" /* OS Is Windows */
129
- #define ESIF_INLINE __inline /* Inline Function Directive */
130
- #define ESIF_FUNC __FUNCTION__ /* Current Function Name */
131
- #define ESIF_CALLCONV __cdecl /* SDK Calling Convention */
132
- #define ESIF_PATH_SEP "\\" /* Path Separator String */
133
- #define ESIF_EXPORT __declspec(dllexport) /* Used for Exported Symbols */
134
- #define ESIF_INVALID_HANDLE ((esif_handle_t)(-1)) /* Invalid ESIF Handle */
135
75
136
- #define ESIF_HANDLE_DEFAULT ((esif_handle_t)(0)) /* Reserved ESIF handle */
137
- #define ESIF_HANDLE_PRIMARY_PARTICIPANT ((esif_handle_t)(1)) /* Reserved ESIF primary participant handle */
138
- #define ESIF_HANDLE_MATCH_ANY_EVENT ((esif_handle_t)(-2)) /* Reserved ESIF handle */
139
-
140
- #define ESIF_WS_LIBRARY_NAME "ipf_ws" /* Legacy Library/App Name for deprecated in-process web server*/
141
76
142
- #define esif_ccb_isfullpath (fname ) (fname[0] == '\\' || (isalpha(fname[0]) && fname[1] == ':'))
143
-
144
- #ifdef __cplusplus
145
- #define ESIF_ELEMENT (x ) /* C99 Designated Initializers unsupported in C++ */
146
- #else
147
- #define ESIF_ELEMENT (x ) x = /* Support C99 Designated Initializers */
148
- #endif
149
-
150
- /* Avoids "conditional constant is an expression" warnings for do...while(0) loops */
151
- #define ESIF_CONSTEXPR (expr ) __pragma(warning(push)) __pragma(warning(disable:4127)) (expr) __pragma(warning(pop))
152
-
153
- /* Sleep Interface */
154
- #define esif_ccb_sleep (sec ) Sleep(sec * 1000)
155
- #define esif_ccb_sleep_msec (msec ) Sleep(msec)
156
-
157
- /* Deduce Platform based on predefined compiler flags */
158
- #ifdef _WIN64
159
- #define ESIF_ATTR_64BIT
160
- #endif
161
-
162
- /* Deduce Debug Build for Windows. Non-Windows can define this in Makefile */
163
- #ifdef _DEBUG
164
- #define ESIF_ATTR_DEBUG
165
- #endif
166
-
167
- #ifdef ESIF_ATTR_DEBUG
168
- #ifdef ESIF_ATTR_USER
169
- #define ESIF_ASSERT (x ) \
170
- do { \
171
- if ESIF_CONSTEXPR(!(x)) \
172
- DebugBreak(); \
173
- } while ESIF_CONSTEXPR(0)
174
-
175
- #else /* !ESIF_ATTR_USER */
176
- #define ESIF_ASSERT (x ) ASSERT(x)
177
- #endif /* !ESIF_ATTR_USER */
178
- #else /* !ESIF_ATTR_DEBUG */
179
- #define ESIF_ASSERT (x ) (0)
180
- #endif /* !ESIF_ATTR_DEBUG */
181
-
182
-
183
- #ifdef ESIF_ATTR_USER
184
- /* Byte Ordering Utilities (Winsock2.h) */
185
- #define esif_ccb_htons (val ) htons(val)
186
- #define esif_ccb_htonl (val ) htonl(val)
187
- #define esif_ccb_htonll (val ) htonll(val)
188
- #endif
189
-
190
- #endif /* WINDOWS */
191
-
192
- #ifdef ESIF_ATTR_OS_LINUX
193
77
194
78
/* All Linux Derived OS */
195
79
196
- #ifdef ESIF_ATTR_USER
197
80
#include <unistd.h> /* POSIX API */
198
81
199
82
/* Common Windows Symbols */
@@ -206,7 +89,6 @@ typedef u64 esif_context_t; /* opaque ESIF 64-bit context (may be a pointer) */
206
89
#include <x86intrin.h>
207
90
#define ESIF_SERIAL_FENCE () _mm_lfence()
208
91
209
- #endif
210
92
211
93
/* Add Linux Base Types */
212
94
typedef unsigned char u8 ;
@@ -238,18 +120,8 @@ typedef u64 esif_handle_t; /* opaque ESIF 64-bit handle (may not be a pointer) *
238
120
typedef u64 esif_context_t ; /* opaque ESIF 64-bit context (may be a pointer) */
239
121
240
122
#ifdef ESIF_ATTR_DEBUG
241
- # ifdef ESIF_ATTR_USER
242
123
# include <assert.h>
243
124
# define ESIF_ASSERT (x ) assert(x)
244
- # else
245
- # define ESIF_ASSERT (x ) \
246
- do { \
247
- if (x) \
248
- break; \
249
- printk(KERN_EMERG "!ESIF_ASSERT! [%s@%s#%d]: %s\n", ESIF_FUNC, __FILE__, __LINE__, #x); \
250
- BUG(); \
251
- } while (0)
252
- # endif
253
125
#else
254
126
# define ESIF_ASSERT (x )
255
127
#endif
@@ -274,7 +146,6 @@ typedef u64 esif_context_t; /* opaque ESIF 64-bit context (may be a pointer) */
274
146
/* Used for constant expressions, such as do...while(0) loops */
275
147
#define ESIF_CONSTEXPR (expr ) (expr)
276
148
277
- #ifdef ESIF_ATTR_USER
278
149
/* Byte Ordering Utilities */
279
150
#include <arpa/inet.h> /* htonl */
280
151
#define esif_ccb_htons (val ) htons(val)
@@ -286,9 +157,7 @@ static ESIF_INLINE u64 esif_ccb_htonll(u64 value)
286
157
u32 lo = htonl ((u32 )value );
287
158
return (((u64 )lo ) << 32 ) | hi ;
288
159
}
289
- #endif
290
160
291
- #endif /* LINUX */
292
161
293
162
/*
294
163
* OS Agnostic
0 commit comments