Usermode/libposix - Updates to get curl and netsurf compiled
[tpg/acess2.git] / Tools / nativelib / include / acess.h
1 /*
2  * Acess2 DiskTool utility
3  * - By John Hodge (thePowersGang)
4  *
5  * include/acess.h
6  * - Mock kernel core header
7  */
8 #ifndef _DISKTOOL__ACESS_H_
9 #define _DISKTOOL__ACESS_H_
10
11 #define CONCAT(x,y) x ## y
12 #define EXPAND_CONCAT(x,y) CONCAT(x,y)
13 #define STR(x) #x
14 #define EXPAND_STR(x) STR(x)
15
16 extern char     __buildnum[];
17 #define BUILD_NUM       ((int)(Uint)&__buildnum)
18 extern const char gsGitHash[];
19 extern const char gsBuildInfo[];
20 #define VER2(major,minor)       ((((major)&0xFF)<<8)|((minor)&0xFF))
21
22
23 #define BITS    32
24 #define NULL    ((void*)0)
25 #include <stdint.h>
26 #include <stdbool.h>
27
28 typedef uintptr_t       Uint;
29 //typedef unsigned int  size_t;
30 #include <stddef.h>
31 typedef uint64_t        off_t;
32 typedef char    BOOL;
33
34
35 typedef uint8_t         Uint8;
36 typedef uint16_t        Uint16;
37 typedef uint32_t        Uint32;
38 typedef uint64_t        Uint64;
39
40 typedef int8_t  Sint8;
41 typedef int16_t Sint16;
42 typedef int32_t Sint32;
43 typedef int64_t Sint64;
44
45 typedef uintptr_t       tVAddr;
46 typedef uint32_t        tPAddr;
47
48 typedef uint32_t        tUID;
49 typedef uint32_t        tGID;
50 typedef uint32_t        tTID;
51 typedef uint32_t        tPGID;
52
53 typedef int64_t tTime;
54 extern tTime    now(void);
55 extern int64_t  timestamp(int sec, int min, int hr, int day, int month, int year);
56 extern void     format_date(tTime TS, int *year, int *month, int *day, int *hrs, int *mins, int *sec, int *ms);
57
58 #define PACKED  __attribute__((packed))
59 #define NORETURN        __attribute__((noreturn))
60 #define DEPRECATED
61 #define EXPORT(s)
62 #define EXPORTV(s)
63
64 #include <vfs_ext.h>
65
66 // These are actually library functions, but they can't be included, so they're defined manually
67 extern void     *malloc(size_t bytes);
68 extern void     *calloc(size_t nmemb, size_t size);
69 extern void     *realloc(void *oldptr, size_t bytes);
70 extern void     free(void *buffer);
71 extern char     *strdup(const char *str);
72
73 #include <errno.h>
74 //#include <acess_logging.h>
75 #include <logdebug.h>
76
77 extern void     Debug_TraceEnter(const char *Function, const char *Format, ...);
78 extern void     Debug_TraceLog(const char *Function, const char *Format, ...);
79 extern void     Debug_TraceLeave(const char *Function, char Type, ...);
80 #undef ENTER
81 #undef LOG
82 #undef LEAVE
83 #undef LEAVE_RET
84 #if DEBUG
85 # define ENTER(str, v...)       Debug_TraceEnter(__func__, str, ##v)
86 # define LOG(fmt, v...)         Debug_TraceLog(__func__, fmt, ##v)
87 # define LEAVE(t, v...)         Debug_TraceLeave(__func__, t, ##v)
88 # define LEAVE_RET(t,v) do{LEAVE('-');return v;}while(0)
89 #else
90 # define ENTER(...)     do{}while(0)
91 # define LOG(...)       do{}while(0)
92 # define LEAVE(...)     do{}while(0)
93 # define LEAVE_RET(t,v) do{return v;}while(0)
94 #endif
95
96 // Threads
97 extern void     **Threads_GetHandlesPtr(void);
98 extern int      *Threads_GetErrno(void);
99 //extern tPGID  Threads_GetPGID(void);
100 //extern tPID   Threads_GetPID(void);
101 extern tTID     Threads_GetTID(void);
102 extern tUID     Threads_GetUID(void);
103 extern tGID     Threads_GetGID(void);
104
105 extern struct sThread   *Proc_SpawnWorker(void (*Fcn)(void*), void *Data);
106 extern void     Threads_Sleep(void);
107 extern void     Threads_Yield(void);
108 extern int      Threads_SetName(const char *NewName);
109
110 // Kinda hacky way of not colliding with native errno
111 #define errno   (*(Threads_GetErrno()))
112
113 /**
114  * \name Endianness Swapping
115  * \{
116  */
117 #ifdef __BIG_ENDIAN__
118 #define LittleEndian16(_val)    SwapEndian16(_val)
119 #define LittleEndian32(_val)    SwapEndian32(_val)
120 #define LittleEndian64(_val)    SwapEndian32(_val)
121 #define BigEndian16(_val)       (_val)
122 #define BigEndian32(_val)       (_val)
123 #define BigEndian64(_val)       (_val)
124 #else
125 #define LittleEndian16(_val)    (_val)
126 #define LittleEndian32(_val)    (_val)
127 #define LittleEndian64(_val)    (_val)
128 #define BigEndian16(_val)       SwapEndian16(_val)
129 #define BigEndian32(_val)       SwapEndian32(_val)
130 #define BigEndian64(_val)       SwapEndian64(_val)
131 #endif
132 extern Uint16   SwapEndian16(Uint16 Val);
133 extern Uint32   SwapEndian32(Uint32 Val);
134 extern Uint64   SwapEndian64(Uint64 Val);
135 /**
136  * \}
137  */
138
139
140 #include <string.h>
141 #include <acess_string.h>
142 #if 0
143 extern int      strucmp(const char *s1, const char *s2);
144 extern int      strpos(const char *Str, char Ch);
145 extern void     itoa(char *buf, uint64_t num, int base, int minLength, char pad);
146 extern int      snprintf(char *buf, size_t len, const char *fmt, ...);
147 extern int      sprintf(char *buf, const char *fmt, ...);
148 extern int      ReadUTF8(const Uint8 *str, Uint32 *Val);
149 extern int      WriteUTF8(Uint8 *str, Uint32 Val);
150 extern int      ParseInt(const char *string, int *Val);
151 #include <ctype.h>
152 extern int      ModUtil_SetIdent(char *Dest, const char *Value);
153 extern int      ModUtil_LookupString(const char **Array, const char *Needle);
154 extern Uint8    ByteSum(const void *Ptr, int Size);
155 extern int      Hex(char *Dest, size_t Size, const Uint8 *SourceData);
156 extern int      UnHex(Uint8 *Dest, size_t DestSize, const char *SourceString);
157 #endif
158 #define CheckString(str)        (1)
159 #define CheckMem(mem,sz)        (1)
160 extern int      rand(void);
161
162 // TODO: Move out?
163 extern int      DivUp(int value, int divisor);
164 extern uint64_t DivMod64U(uint64_t Num, uint64_t Den, uint64_t *Rem);
165 static inline int MIN(int a, int b) { return a < b ? a : b; }
166 static inline int MAX(int a, int b) { return a > b ? a : b; }
167
168 #include <shortlock.h>
169
170 static inline intptr_t MM_GetPhysAddr(void *Ptr) { return 1; }
171 static inline int       MM_IsUser(const void *Ptr) { return 1; }
172
173 #endif
174

UCC git Repository :: git.ucc.asn.au