xref: /reactos/sdk/lib/rossym_new/compat.h (revision 40462c92)
1 #ifndef _LIBMACH_COMPAT_H_
2 #define _LIBMACH_COMPAT_H_
3 
4 /* BSD like types */
5 typedef signed char schar;
6 typedef unsigned char uchar;
7 typedef unsigned int uint;
8 typedef unsigned long ulong;
9 typedef unsigned long long uvlong;
10 
11 typedef unsigned short u16int;
12 typedef short s16int;
13 typedef unsigned int u32int;
14 typedef int s32int;
15 typedef unsigned long long u64int;
16 typedef long long s64int;
17 
18 #ifndef _WIN32
19 typedef ulong size_t;
20 #endif
21 
22 DECLSPEC_NORETURN
23 NTSYSAPI
24 VOID
25 NTAPI
26 RtlRaiseStatus(IN NTSTATUS Status);
27 
28 #undef assert
29 #define assert(x) do { \
30     if (!(x)) { \
31         werrstr("(%s:%d) assertion " #x " failed\n", __FILE__, __LINE__); \
32         RtlRaiseStatus(STATUS_ASSERTION_FAILURE); \
33     } \
34     } while (0)
35 #define offsetof(x,y) FIELD_OFFSET(x,y)
36 #define nil (0)
37 
38 #define nelem(arr) (sizeof((arr)[0]) / sizeof((arr)))
39 
40 int readn(void *fd, char *buf, ulong len);
41 int seek(void *fd, ulong off, int mode);
42 
43 void *RosSymAllocMemZero(ulong num, ulong size);
44 void *RosSymRealloc(void *mem, ulong newsize);
45 void xfree(void *v);
46 
47 #define werrstr(str, ...) DPRINT(str "\n" ,##__VA_ARGS__)
48 #if 0
49 #ifdef NDEBUG
50 #define werrstr(x, ...)
51 #else
52 #define werrstr(x, ...) printf("(%s:%d) " x "\n",__FILE__,__LINE__,##__VA_ARGS__)
53 #endif
54 #endif
55 
56 #define malloc(x) RosSymAllocMem(x)
57 #define mallocz(x,y) RosSymAllocMemZero(x,y)
58 #define free(x) xfree(x)
59 #define USED(x) (*((char *)&(x)) ^= 0)
60 #define memset(x,y,z) RtlZeroMemory(x,z)
61 
62 #endif/*_LIBMACH_COMPAT_H_*/
63