Zen API
Home
Topics
Types
Files
All
Classes
Files
Functions
Variables
Typedefs
Friends
Macros
Modules
Pages
kApiCfg.h
Go to the documentation of this file.
1
10
#ifndef K_API_API_CFG_H
11
#define K_API_API_CFG_H
12
13
#if defined(_MSC_VER)
14
# define K_MSVC
15
#elif defined(__TI_COMPILER_VERSION__)
16
# define K_TI_CCS
17
#else
18
# define K_GCC
19
#endif
20
21
#if defined(_WIN32) || defined(_WIN64)
22
# define K_WINDOWS
23
#elif defined(K_TI_CCS)
24
# define K_DSP_BIOS
25
#elif defined(_WRS_KERNEL)
26
# define K_VX_KERNEL
27
#else
28
# define K_POSIX
29
# if defined(__linux__)
30
# define K_LINUX
31
# endif
32
# if defined(__APPLE__)
33
# define K_DARWIN
34
# endif
35
# if defined(__QNXNTO__)
36
# define K_QNX
37
# endif
38
#endif
39
40
#if defined(K_DM647) && !defined(CHIP_DM648)
41
# define CHIP_DM648
42
#endif
43
44
#if defined(K_DEBUG)
45
# define K_DEBUG_ENABLED (1)
46
#else
47
# define K_DEBUG_ENABLED (0)
48
#endif
49
50
#if defined(K_PROFILE)
51
# define K_PROFILE_ENABLED (1)
52
#else
53
# define K_PROFILE_ENABLED (0)
54
#endif
55
56
#if defined(K_MSVC) && defined(K_DEBUG)
57
# define _CRTDBG_MAP_ALLOC
58
# include <stdlib.h>
59
# include <crtdbg.h>
60
#endif
61
62
#include <stdarg.h>
63
#include <stddef.h>
64
#include <stdlib.h>
65
#include <string.h>
66
#include <assert.h>
67
68
#if !defined(K_MSVC)
69
# include <stdint.h>
70
#endif
71
72
#if defined(_WIN64) || defined(WIN64)
73
# define K_POINTER_SIZE (8)
74
#elif defined(_WIN32) || defined(WIN32)
75
# define K_POINTER_SIZE (4)
76
#elif defined(_TMS320C6X)
77
# define K_POINTER_SIZE (4)
78
#elif (UINTPTR_MAX == UINT32_MAX)
79
# define K_POINTER_SIZE (4)
80
#elif (UINTPTR_MAX == UINT64_MAX)
81
# define K_POINTER_SIZE (8)
82
#else
83
# error "Unsupported pointer size."
84
#endif
85
86
#if defined(K_GCC) && defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
87
# define K_BIG_ENDIAN
88
# define K_IS_LITTLE_ENDIAN (kFALSE)
89
#elif defined(K_TI_CCS) && defined(_LITTLE_ENDIAN)
90
# define K_LITTLE_ENDIAN
91
# define K_IS_LITTLE_ENDIAN (kTRUE)
92
#elif !defined(K_LITTLE_ENDIAN) && !defined(K_BIG_ENDIAN)
93
# define K_LITTLE_ENDIAN
94
# define K_IS_LITTLE_ENDIAN (kTRUE)
95
#endif
96
97
#if defined(K_MSVC)
98
99
# define kxCall __stdcall
100
# define kxDlCall __cdecl
101
102
# define kExportFx(TYPE) __declspec(dllexport) TYPE kCall
103
# define kImportFx(TYPE) __declspec(dllimport) TYPE kCall
104
105
# define kExportCx(TYPE) __declspec(dllexport) TYPE kxDlCall
106
# define kImportCx(TYPE) __declspec(dllimport) TYPE kxDlCall
107
108
# define kInFx(TYPE) TYPE kCall
109
# define kInCx(TYPE) TYPE kCall
110
111
# define kExportDx(TYPE) __declspec(dllexport) TYPE
112
# define kImportDx(TYPE) __declspec(dllimport) TYPE
113
114
# define kInDx(TYPE) TYPE
115
116
typedef
unsigned
__int8 kx8u;
117
typedef
unsigned
__int16 kx16u;
118
typedef
unsigned
__int32 kx32u;
119
typedef
unsigned
__int64 kx64u;
120
typedef
__int8 kx8s;
121
typedef
__int16 kx16s;
122
typedef
__int32 kx32s;
123
typedef
__int64 kx64s;
124
typedef
float
kx32f;
125
typedef
double
kx64f;
126
typedef
char
kxChar;
127
typedef
unsigned
char
kxByte;
128
129
# define kx64U(CONSTANT) (CONSTANT##ui64)
130
# define kx64S(CONSTANT) (CONSTANT##i64)
131
132
#elif defined(K_TI_CCS)
133
134
# define kxCall
135
# define kxDlCall
136
137
# define kExportFx(TYPE) TYPE kCall
138
# define kImportFx(TYPE) TYPE kCall
139
140
# define kExportCx(TYPE) TYPE kDlCall
141
# define kImportCx(TYPE) TYPE kDlCall
142
143
# define kInFx(TYPE) TYPE kCall
144
# define kInCx(TYPE) TYPE kCall
145
146
# define kExportDx(TYPE) TYPE
147
# define kImportDx(TYPE) TYPE
148
149
# define kInDx(TYPE) TYPE
150
151
typedef
unsigned
char
kx8u;
152
typedef
unsigned
short
kx16u;
153
typedef
unsigned
int
kx32u;
154
typedef
unsigned
long
long
kx64u;
155
typedef
signed
char
kx8s;
156
typedef
signed
short
kx16s;
157
typedef
signed
int
kx32s;
158
typedef
signed
long
long
kx64s;
159
typedef
float
kx32f;
160
typedef
double
kx64f;
161
typedef
char
kxChar;
162
typedef
unsigned
char
kxByte;
163
164
# define kx64U(CONSTANT) (CONSTANT##LLU)
165
# define kx64S(CONSTANT) (CONSTANT##LL)
166
167
#else
168
169
# define kxCall
170
# define kxDlCall
171
172
# define kExportFx(TYPE) TYPE kCall
173
# define kImportFx(TYPE) TYPE kCall
174
175
# define kExportCx(TYPE) TYPE kDlCall
176
# define kImportCx(TYPE) TYPE kDlCall
177
178
# define kInFx(TYPE) TYPE kCall
179
# define kInCx(TYPE) TYPE kCall
180
181
# define kExportDx(TYPE) TYPE
182
# define kImportDx(TYPE) TYPE
183
184
# define kInDx(TYPE) TYPE
185
186
typedef
unsigned
char
kx8u;
187
typedef
unsigned
short
kx16u;
188
typedef
unsigned
int
kx32u;
189
typedef
unsigned
long
long
kx64u;
190
typedef
signed
char
kx8s;
191
typedef
signed
short
kx16s;
192
typedef
signed
int
kx32s;
193
typedef
signed
long
long
kx64s;
194
typedef
float
kx32f;
195
typedef
double
kx64f;
196
typedef
char
kxChar;
197
typedef
unsigned
char
kxByte;
198
199
# define kx64U(CONSTANT) (CONSTANT##LLU)
200
# define kx64S(CONSTANT) (CONSTANT##LL)
201
202
#endif
203
204
#if (K_POINTER_SIZE == 4)
205
206
typedef
kx32u kxSize;
207
# define kxSIZE_MAX k32U_MAX
208
209
typedef
kx32s kxSSize;
210
# define kxSSIZE_MIN k32S_MIN
211
# define kxSSIZE_MAX k32S_MAX
212
213
#elif (K_POINTER_SIZE == 8)
214
215
typedef
kx64u kxSize;
216
# define kxSIZE_MAX k64U_MAX
217
218
typedef
kx64s kxSSize;
219
# define kxSSIZE_MIN k64S_MIN
220
# define kxSSIZE_MAX k64S_MAX
221
222
#endif
223
224
#define kALIGN_ANY (3)
225
#define kALIGN_ANY_SIZE (1 << kALIGN_ANY)
226
227
#define kVarArgList va_list
228
229
#if defined(K_MSVC) || defined(K_TI_CCS)
230
# define kVarArgList_Start_(ARG_PTR, PREV_PARAM) va_start(ARG_PTR, PREV_PARAM)
231
# define kVarArgList_End_(ARG_PTR) va_end(ARG_PTR)
232
# define kVarArgList_Copy_(ARG_PTR, SOURCE) ((ARG_PTR) = (SOURCE))
233
# define kVarArgList_Next_(ARG_PTR, TYPE) va_arg(ARG_PTR, TYPE)
234
#else
235
# define kVarArgList_Start_(ARG_PTR, PREV_PARAM) va_start(ARG_PTR, PREV_PARAM)
236
# define kVarArgList_End_(ARG_PTR) va_end(ARG_PTR)
237
# define kVarArgList_Copy_(ARG_PTR, SOURCE) va_copy(ARG_PTR, SOURCE)
238
# define kVarArgList_Next_(ARG_PTR, TYPE) va_arg(ARG_PTR, TYPE)
239
#endif
240
241
#if defined (__cplusplus)
242
# define kBeginHeader() extern "C" {
243
# define kEndHeader() }
244
#else
245
# define kBeginHeader()
246
# define kEndHeader()
247
#endif
248
249
/*
250
* Some source files require platform library headers to be included. And, at least
251
* for Windows, there can sometimes exist complicated rules about the particular order
252
* in which headers have to be included. The K_PLATFORM symbol helps to deal with
253
* these issues.
254
*
255
* Any kApi source file that requires platform headers should have #define K_PLATFORM as the
256
* first line in the source file. This ensures that the most common platform headers are
257
* included here, in the correct order.
258
*/
259
#if defined(K_PLATFORM)
260
# if defined(K_WINDOWS)
261
# include <winsock2.h>
262
# include <ws2tcpip.h>
263
# include <iphlpapi.h>
264
# include <windows.h>
265
# include <process.h>
266
# endif
267
# if defined(K_DSP_BIOS)
268
# include <std.h>
269
# include <gbl.h>
270
# include <clk.h>
271
# include <tsk.h>
272
# include <lck.h>
273
# include <sem.h>
274
# include <prd.h>
275
# include <netmain.h>
276
# include <nettools/nettools.h>
277
# include <nettools/inc/inet.h>
278
# endif
279
# if defined(K_VX_KERNEL)
280
# include <vxWorks.h>
281
# include <sysLib.h>
282
# include <kernelLib.h>
283
# include <intLib.h>
284
# include <taskLib.h>
285
# include <stdioLib.h>
286
# include <strLib.h>
287
# include <sockLib.h>
288
# include <inetLib.h>
289
# include <ioLib.h>
290
# include <fioLib.h>
291
# include <selectLib.h>
292
# include <netinet/in.h>
293
# include <netinet/tcp.h>
294
# include <wrapper/wrapperHostLib.h>
295
# include <netdb.h>
296
# include <sys/socket.h>
297
# include <net/if.h>
298
# include <ipnet/ipioctl.h>
299
# endif
300
# if defined(K_POSIX)
301
# include <errno.h>
302
# include <unistd.h>
303
# include <pthread.h>
304
# include <semaphore.h>
305
# include <sys/types.h>
306
# include <sys/stat.h>
307
# include <sys/fcntl.h>
308
# include <sys/socket.h>
309
# include <sys/select.h>
310
# include <sys/ioctl.h>
311
# include <sys/time.h>
312
# include <sys/timeb.h>
313
# include <netinet/in.h>
314
# include <netinet/tcp.h>
315
# include <dlfcn.h>
316
# include <dirent.h>
317
# include <net/if.h>
318
# include <netdb.h>
319
# endif
320
# if defined(K_DARWIN)
321
# include <ifaddrs.h>
322
# include <mach-o/dyld.h>
323
# include <libkern/OSAtomic.h>
324
# endif
325
#endif
326
327
#if defined(K_VX_KERNEL)
328
# include <base/b_atomic_t.h>
329
330
typedef
atomic32Val_t kxAtomic32s;
331
typedef
atomicVal_t kxAtomicPointer;
332
#else
333
typedef
volatile
kx32s kxAtomic32s;
334
typedef
void
*
volatile
kxAtomicPointer;
335
#endif
336
337
#if defined(K_PLATFORM)
338
# if defined(K_WINDOWS)
339
# define K_OS_INFINITE INFINITE
340
typedef
DWORD kThreadId;
341
# elif defined(K_DSP_BIOS)
342
# define K_OS_INFINITE SYS_FOREVER
343
typedef
TSK_Handle kThreadId;
344
# elif defined(K_VX_KERNEL)
345
# define K_OS_INFINITE WAIT_FOREVER
346
typedef
TASK_ID kThreadId;
347
# elif defined(K_POSIX)
348
# define K_OS_INFINITE kINFINITE //no special "infinite" value
349
typedef
pthread_t kThreadId;
350
# endif
351
#endif
352
353
#if defined(K_COMPAT_5)
354
355
// simple renaming (handled by porting script)
356
# define KAPI_ALIGN_SHIFT kALIGN_ANY
357
# define KAPI_ALIGN kALIGN_ANY_SIZE
358
359
/*
360
* These flags probably shouldn't exist; but since they're going to be
361
* required for some time (FS 5 compatibility), we may as well use an
362
* up-to-date style.
363
*/
364
# if defined(K_DSP)
365
# define KAPI_DSP
366
# elif defined(K_HOST)
367
# define KAPI_HOST
368
# elif defined(K_VIRTUAL)
369
# define KAPI_VIRTUAL
370
# endif
371
372
# if defined(K_WINDOWS)
373
# define KAPI_MS_WINDOWS
374
# elif defined(K_DSP_BIOS)
375
# define KAPI_TI_DSP_BIOS
376
# endif
377
378
#endif
379
380
#endif
kApiCfg.h
This site is best viewed with Firefox. Copyright (C) 2003-2015 by LMI Technologies.