10 #include <sys/types.h>
\r
12 #define EXIT_FAILURE 1
\r
13 #define EXIT_SUCCESS 0
\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
21 /* --- StdLib --- */
\r
22 extern void _exit(int code) __attribute__((noreturn)); /* NOTE: Also defined in acess/sys.h */
\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
30 extern double strtod(const char *ptr, char **end);
\r
31 extern float strtof(const char *ptr, char **end);
\r
32 extern float atof(const char *ptr);
\r
34 extern void exit(int status) __attribute__((noreturn));
\r
35 extern void abort(void);
\r
36 extern void atexit(void (*__func)(void));
\r
37 extern void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *));
\r
38 extern int abs(int j);
\r
39 extern long int labs(long int j);
\r
40 extern long long int llabs(long long int j);
\r
42 /* --- Environment --- */
\r
43 extern char *getenv(const char *name);
\r
46 extern void free(void *mem);
\r
47 extern void *malloc(size_t bytes);
\r
48 extern void *calloc(size_t __nmemb, size_t __size);
\r
49 extern void *realloc(void *__ptr, size_t __size);
\r
50 extern int IsHeap(void *ptr);
\r
52 /* --- Random --- */
\r
53 extern void srand(unsigned int seed);
\r
54 extern int rand(void);
\r
55 extern int rand_p(unsigned int *seedp);
\r
60 # define SEEK_END (-1)
\r