Adding usermode tree
[tpg/acess2.git] / Usermode / include / stdlib.h
1 /*\r
2 AcessOS LibC\r
3 \r
4 stdlib.h\r
5 */\r
6 #ifndef __STDLIB_H\r
7 #define __STDLIB_H\r
8 \r
9 #include <stdarg.h>\r
10 #include <sys/types.h>\r
11 \r
12 #ifndef NULL\r
13 # define NULL   ((void*)0)\r
14 #endif\r
15 \r
16 typedef unsigned int    size_t;\r
17 \r
18 // --- Spinlock Macros ---\r
19 #define DEFLOCK(_name)  static int _spinlock_##_name=0;\r
20 //#define LOCK(_name)   __asm__ __volatile__("jmp ._tst;\n\t._lp:call yield;\n\t._tst:lock btsl $1,(%0);\n\tjc ._lp"::"D"(&_spinlock_##_name))\r
21 #define LOCK(_name)     do{int v=1;while(v){__asm__ __volatile__("lock cmpxchgl %%eax, (%1)":"=a"(v):"D"((&_spinlock_##_name)),"a"(1));yield();}}while(0)\r
22 #define UNLOCK(_name) __asm__ __volatile__("lock andl $0, (%0)"::"D"(&_spinlock_##_name))\r
23 \r
24 // --- StdLib ---\r
25 extern int      atoi(const char *ptr);\r
26 \r
27 extern void *memcpy(void *dest, void *src, size_t count);\r
28 extern void *memmove(void *dest, void *src, size_t count);\r
29 \r
30 // --- Environment ---\r
31 extern char     *getenv(const char *name);\r
32 \r
33 // --- Heap ---\r
34 extern void free(void *mem);\r
35 extern void *malloc(unsigned int bytes);\r
36 extern void *realloc(void *oldPos, unsigned int bytes);\r
37 extern int      IsHeap(void *ptr);\r
38 \r
39 // --- Strings ---\r
40 extern int      strlen(const char *string);\r
41 extern int      strcmp(char *str1, char *str2);\r
42 extern int      strncmp(char *str1, char *str2, size_t len);\r
43 extern char     *strcpy(char *dst, const char *src);\r
44 \r
45 #ifndef SEEK_CUR\r
46 # define SEEK_CUR       0\r
47 # define SEEK_SET       1\r
48 # define SEEK_END       (-1)\r
49 #endif\r
50 \r
51 #endif\r

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