Go to the documentation of this file.
10 #ifndef K_API_API_CFG_H
11 #define K_API_API_CFG_H
16 #elif defined(__TI_COMPILER_VERSION__)
23 #if defined(_WIN32) || defined(_WIN64)
25 #elif defined(K_TI_CCS)
27 #elif defined(_WRS_KERNEL)
31 # if defined(__linux__)
34 # if defined(__APPLE__)
37 # if defined(__QNXNTO__)
48 # define K_DEBUG_ENABLED (1)
50 # define K_DEBUG_ENABLED (0)
53 #if defined(K_PROFILE)
54 # define K_PROFILE_ENABLED (1)
56 # define K_PROFILE_ENABLED (0)
63 #if defined(K_MSVC) && defined(K_DEBUG)
64 # define _CRTDBG_MAP_ALLOC
79 #if !defined(K_POINTER_SIZE)
80 # if defined(_WIN64) || defined(WIN64)
81 # define K_POINTER_SIZE (8)
82 # elif defined(_WIN32) || defined(WIN32)
83 # define K_POINTER_SIZE (4)
84 # elif defined(__SIZEOF_POINTER__)
85 # define K_POINTER_SIZE (__SIZEOF_POINTER__)
86 # elif defined(__LP64__) || defined(__LLP64__) || defined(__SILP64__)
87 # define K_POINTER_SIZE (8)
88 # elif defined(__LP32__) || defined(__ILP32__)
89 # define K_POINTER_SIZE (4)
90 # elif defined(_TMS320C6X)
91 # define K_POINTER_SIZE (4)
93 # error "Pointer size not detected; define K_POINTER_SIZE as compiler flag."
101 #if !defined(K_ENDIANNESS)
102 # if defined(K_GCC) && defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
103 # define K_ENDIANNESS (kENDIANNESS_BIG)
105 # define K_ENDIANNESS (kENDIANNESS_LITTLE)
112 # define kxCall __stdcall
113 # define kxDlCall __cdecl
115 # define kExportFx(TYPE) __declspec(dllexport) TYPE kCall
116 # define kImportFx(TYPE) __declspec(dllimport) TYPE kCall
118 # define kExportCx(TYPE) __declspec(dllexport) TYPE kxDlCall
119 # define kImportCx(TYPE) __declspec(dllimport) TYPE kxDlCall
121 # define kInFx(TYPE) TYPE kCall
122 # define kInCx(TYPE) TYPE kCall
124 # define kExportDx(TYPE) __declspec(dllexport) TYPE
125 # define kImportDx(TYPE) __declspec(dllimport) TYPE
127 # define kInDx(TYPE) TYPE
129 typedef unsigned __int8 kx8u;
130 typedef unsigned __int16 kx16u;
131 typedef unsigned __int32 kx32u;
132 typedef unsigned __int64 kx64u;
134 typedef __int16 kx16s;
135 typedef __int32 kx32s;
136 typedef __int64 kx64s;
138 typedef double kx64f;
140 typedef unsigned char kxByte;
142 # define kx64U(CONSTANT) (CONSTANT##ui64)
143 # define kx64S(CONSTANT) (CONSTANT##i64)
145 #elif defined(K_TI_CCS)
150 # define kExportFx(TYPE) TYPE kCall
151 # define kImportFx(TYPE) TYPE kCall
153 # define kExportCx(TYPE) TYPE kDlCall
154 # define kImportCx(TYPE) TYPE kDlCall
156 # define kInFx(TYPE) TYPE kCall
157 # define kInCx(TYPE) TYPE kCall
159 # define kExportDx(TYPE) TYPE
160 # define kImportDx(TYPE) TYPE
162 # define kInDx(TYPE) TYPE
164 typedef unsigned char kx8u;
165 typedef unsigned short kx16u;
166 typedef unsigned int kx32u;
167 typedef unsigned long long kx64u;
168 typedef signed char kx8s;
169 typedef signed short kx16s;
170 typedef signed int kx32s;
171 typedef signed long long kx64s;
173 typedef double kx64f;
175 typedef unsigned char kxByte;
177 # define kx64U(CONSTANT) (CONSTANT##LLU)
178 # define kx64S(CONSTANT) (CONSTANT##LL)
185 # define kExportFx(TYPE) TYPE kCall
186 # define kImportFx(TYPE) TYPE kCall
188 # define kExportCx(TYPE) TYPE kDlCall
189 # define kImportCx(TYPE) TYPE kDlCall
191 # define kInFx(TYPE) TYPE kCall
192 # define kInCx(TYPE) TYPE kCall
194 # define kExportDx(TYPE) TYPE
195 # define kImportDx(TYPE) TYPE
197 # define kInDx(TYPE) TYPE
199 typedef unsigned char kx8u;
200 typedef unsigned short kx16u;
201 typedef unsigned int kx32u;
202 typedef unsigned long long kx64u;
203 typedef signed char kx8s;
204 typedef signed short kx16s;
205 typedef signed int kx32s;
206 typedef signed long long kx64s;
208 typedef double kx64f;
210 typedef unsigned char kxByte;
212 # define kx64U(CONSTANT) (CONSTANT##LLU)
213 # define kx64S(CONSTANT) (CONSTANT##LL)
217 #if (K_POINTER_SIZE == 4)
219 typedef kx32u kxSize;
220 # define kxSIZE_MAX k32U_MAX
222 typedef kx32s kxSSize;
223 # define kxSSIZE_MIN k32S_MIN
224 # define kxSSIZE_MAX k32S_MAX
226 #elif (K_POINTER_SIZE == 8)
228 typedef kx64u kxSize;
229 # define kxSIZE_MAX k64U_MAX
231 typedef kx64s kxSSize;
232 # define kxSSIZE_MIN k64S_MIN
233 # define kxSSIZE_MAX k64S_MAX
237 #define kALIGN_ANY (3)
238 #define kALIGN_ANY_SIZE (1 << kALIGN_ANY)
240 #define kVarArgList va_list
242 #if defined(K_MSVC) || defined(K_TI_CCS)
243 # define kVarArgList_Start_(ARG_PTR, PREV_PARAM) va_start(ARG_PTR, PREV_PARAM)
244 # define kVarArgList_End_(ARG_PTR) va_end(ARG_PTR)
245 # define kVarArgList_Copy_(ARG_PTR, SOURCE) ((ARG_PTR) = (SOURCE))
246 # define kVarArgList_Next_(ARG_PTR, TYPE) va_arg(ARG_PTR, TYPE)
248 # define kVarArgList_Start_(ARG_PTR, PREV_PARAM) va_start(ARG_PTR, PREV_PARAM)
249 # define kVarArgList_End_(ARG_PTR) va_end(ARG_PTR)
250 # define kVarArgList_Copy_(ARG_PTR, SOURCE) va_copy(ARG_PTR, SOURCE)
251 # define kVarArgList_Next_(ARG_PTR, TYPE) va_arg(ARG_PTR, TYPE)
258 #if defined (__cplusplus)
259 # define kBeginHeader() extern "C" {
260 # define kEndHeader() }
262 # define kBeginHeader()
263 # define kEndHeader()
276 #if defined(K_PLATFORM)
286 # if defined(K_WINDOWS)
287 # include <winsock2.h>
288 # include <ws2tcpip.h>
289 # include <iphlpapi.h>
290 # include <windows.h>
291 # include <process.h>
293 # if defined(K_DSP_BIOS)
301 # include <netmain.h>
302 # include <nettools/nettools.h>
303 # include <nettools/inc/inet.h>
305 # if defined(K_VX_KERNEL)
306 # include <vxWorks.h>
308 # include <kernelLib.h>
309 # include <loadLib.h>
312 # include <sysSymTbl.h>
313 # include <taskLib.h>
314 # include <unldLib.h>
315 # include <stdioLib.h>
317 # include <sockLib.h>
318 # include <inetLib.h>
321 # include <selectLib.h>
322 # include <netinet/in.h>
323 # include <netinet/tcp.h>
324 # include <wrapper/wrapperHostLib.h>
326 # include <sys/socket.h>
328 # include <ipnet/ipioctl.h>
330 # if defined(K_POSIX)
333 # include <pthread.h>
334 # include <semaphore.h>
335 # include <sys/types.h>
336 # include <sys/stat.h>
340 # include <sys/fcntl.h>
342 # include <sys/socket.h>
343 # include <sys/select.h>
344 # include <sys/ioctl.h>
345 # include <sys/time.h>
346 # include <sys/timeb.h>
347 # include <netinet/in.h>
348 # include <netinet/tcp.h>
354 # if defined(K_DARWIN)
355 # include <ifaddrs.h>
356 # include <mach-o/dyld.h>
357 # include <libkern/OSAtomic.h>
361 #if defined(K_VX_KERNEL)
362 typedef kx32s kxAtomic32s;
363 typedef kxSSize kxAtomicPointer;
365 typedef volatile kx32s kxAtomic32s;
366 typedef void*
volatile kxAtomicPointer;
369 #if defined(K_PLATFORM)
370 # if defined(K_WINDOWS)
371 # define K_OS_INFINITE INFINITE
372 typedef DWORD kThreadId;
373 # elif defined(K_DSP_BIOS)
374 # define K_OS_INFINITE SYS_FOREVER
375 typedef TSK_Handle kThreadId;
376 # elif defined(K_VX_KERNEL)
377 # define K_OS_INFINITE WAIT_FOREVER
378 typedef TASK_ID kThreadId;
379 # elif defined(K_POSIX)
380 # define K_OS_INFINITE kINFINITE
381 typedef pthread_t kThreadId;
385 #if defined(K_VX_KERNEL)
386 # if defined(K_MAIN_DYNAMIC)
388 # define kMain kMain_Dynamic
393 # define kMAIN_DYNAMIC "kMain_Dynamic"
395 # define kMAIN_DYNAMIC "kMain"
398 #if defined(K_COMPAT_5)
401 # define KAPI_ALIGN_SHIFT kALIGN_ANY
402 # define KAPI_ALIGN kALIGN_ANY_SIZE
411 # elif defined(K_HOST)
413 # elif defined(K_VIRTUAL)
414 # define KAPI_VIRTUAL
417 # if defined(K_WINDOWS)
418 # define KAPI_MS_WINDOWS
419 # elif defined(K_DSP_BIOS)
420 # define KAPI_TI_DSP_BIOS