Usermode - A few tweaks to POSIX emulation for dropbear
[tpg/acess2.git] / Usermode / Libraries / libc.so_src / include_exp / stdlib.h
1 /*\r
2  * AcessOS LibC\r
3  * stdlib.h\r
4  */\r
5 #ifndef __STDLIB_H\r
6 #define __STDLIB_H\r
7 \r
8 #include <stddef.h>\r
9 #include <stdarg.h>\r
10 #include <sys/types.h>\r
11 \r
12 #define EXIT_FAILURE    1\r
13 #define EXIT_SUCCESS    0\r
14 \r
15 /* --- Spinlock Macros --- */\r
16 /* TODO: Support non-x86 architectures */\r
17 #define DEFLOCK(_name)  static int _spinlock_##_name=0;\r
18 #define LOCK(_name)     do{int v=1;while(v){__asm__ __volatile__("lock cmpxchgl %0, (%1)":"=a"(v):"D"((&_spinlock_##_name)),"a"(1));yield();}}while(0)\r
19 #define UNLOCK(_name) __asm__ __volatile__("lock andl $0, (%0)"::"D"(&_spinlock_##_name))\r
20 \r
21 /* --- StdLib --- */\r
22 extern void     _exit(int code) __attribute__((noreturn));      /* NOTE: Also defined in acess/sys.h */\r
23 \r
24 extern long long        strtoll(const char *ptr, char **end, int base);\r
25 extern long     strtol(const char *ptr, char **end, int base);\r
26 extern unsigned long long       strtoull(const char *ptr, char **end, int base);\r
27 extern unsigned long    strtoul(const char *ptr, char **end, int base);\r
28 extern int      atoi(const char *ptr);\r
29 extern void     exit(int status) __attribute__((noreturn));\r
30 extern void     abort(void);\r
31 extern void     atexit(void (*__func)(void));\r
32 extern void     qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *));\r
33 extern int      abs(int j);\r
34 extern long int labs(long int j);\r
35 extern long long int    llabs(long long int j);\r
36 \r
37 /* --- Environment --- */\r
38 extern char     *getenv(const char *name);\r
39 \r
40 /* --- Heap --- */\r
41 extern void     free(void *mem);\r
42 extern void     *malloc(size_t bytes);\r
43 extern void     *calloc(size_t __nmemb, size_t __size);\r
44 extern void     *realloc(void *__ptr, size_t __size);\r
45 extern int      IsHeap(void *ptr);\r
46 \r
47 /* --- Random --- */\r
48 extern void     srand(unsigned int seed);\r
49 extern int      rand(void);\r
50 extern int      rand_p(unsigned int *seedp);\r
51 \r
52 #ifndef SEEK_CUR\r
53 # define SEEK_CUR       0\r
54 # define SEEK_SET       1\r
55 # define SEEK_END       (-1)\r
56 #endif\r
57 \r
58 #endif\r

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