35fa6aebf14edae69caa8b18defa8e1ae75f246a
[tpg/acess2.git] / AcessNative / ld-acess.so_src / syscalls.c
1 /*
2  */
3 //#include <acess/sys.h>
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <stdint.h>
7
8 // === IMPORTS ===
9 /**
10  * \param ArgTypes
11  *
12  * Whitespace is ignored
13  * >i:  Input Integer
14  * >I:  Input Long Integer (64-bits)
15  * >s:  Input String
16  * >d:  Input Buffer (Preceded by valid size)
17  * <I:  Output long integer
18  * <d:  Output Buffer (Preceded by valid size)
19  */
20 int _Syscall(const char *ArgTypes, ...)
21 {
22          int    outBufSize = 0;
23         va_list args;
24         
25         va_start(args, ArgTypes);
26         va_end(args);
27         
28 }
29
30 int open(const char *Path, int Flags) {
31         return _Syscall(">s >i", Path, Flags);
32 }
33
34 void close(int FD) {
35         _Syscall(">i", FD);
36 }
37
38 size_t read(int FD, size_t Bytes, void *Dest) {
39         return _Syscall(">i >i <d", FD, Bytes, Bytes, Dest);
40 }
41
42 size_t write(int FD, size_t Bytes, void *Src) {
43         return _Syscall(">i >i >d", FD, Bytes, Bytes, Src);
44 }
45
46 uint64_t tell(int FD) {
47         uint64_t        ret;
48         _Syscall("<I >i", &ret, FD);
49         return ret;
50 }
51
52 int seek(int FD, uint64_t Ofs, int Dir) {
53         return _Syscall(">i >I >i", FD, Ofs, Dir);
54 }
55

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