summaryrefslogtreecommitdiff
path: root/syscalls.c
blob: f2978cc5db14f1e65c76da4a26d5620a9f581fd3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdint.h>

typedef struct fs_dirent_struct
{
    uint32_t	inode;
    uint32_t	offset;
    uint16_t	length;
    uint8_t	type;
    char	name[256];
}fs_dirent;

#define SYSCALL_EXIT         60
#define SYSCALL_WRITE        61
#define SYSCALL_READ         62
#define SYSCALL_READDIR      63 // fool-os-special
#define SYSCALL_EXECVE       64
#define SYSCALL_OPEN         65
#define SYSCALL_CLOSE        66
#define SYSCALL_FSTAT        67
#define SYSCALL_ISATTY       68
#define SYSCALL_LSEEK        69
#define SYSCALL_SBRK         70
#define SYSCALL_GETTIMEOFDAY 71
#define SYSCALL_FORK         72
#define SYSCALL_KILL         73
#define SYSCALL_STAT         74
#define SYSCALL_TIMES        75
#define SYSCALL_UNLINK       76
#define SYSCALL_WAIT         77
#define SYSCALL_GETPID       78
#define SYSCALL_LSTAT        79
#define SYSCALL_HAS_DATA     80 // fool-os-special
#define SYSCALL_TUNE         81 // fool-os-special
#define SYSCALL_LINK         82

extern char **environ;
//struct _reent *_impure_ptr;

// fool os custom
int readdir(const char *name,fs_dirent *dirs,int max)
{
    return syscall(SYSCALL_READDIR,name,dirs,max);
}

int has_data_waiting()
{
    return syscall(SYSCALL_HAS_DATA,0,0,0);
}

int fool_tune(int v1, int v2, int v3)
{
    return syscall(SYSCALL_TUNE,v1,v2,v3);
}
//

void _exit(int ret)
{
    _exit2(ret,environ);
}

void _exit2(int ret,char **environ)
{
    return syscall(SYSCALL_EXIT,ret,environ,0);
}

int _close(int file) 
{
    return syscall(SYSCALL_CLOSE,file,0,0);
}

int _isatty(int file) 
{
    return syscall(SYSCALL_ISATTY,file,0,0);
}

int _lseek(int file, int ptr, int dir) 
{
    return syscall(SYSCALL_LSEEK,file,ptr,dir);
}

int _read(int file, char *ptr, int len)
{
    return syscall(SYSCALL_READ,file,ptr,len);
}

int _open(const char *name, int flags, int mode)
{
    return syscall(SYSCALL_OPEN,name,flags,mode);
}

int _write(int file, char *ptr, int len) 
{
    return syscall(SYSCALL_WRITE,file,ptr,len);
}

int _execve(char *name, char **argv, char **env) 
{
    return syscall(SYSCALL_EXECVE,name,argv,env);
}

uint32_t _sbrk(int incr) 
{
    return syscall(SYSCALL_SBRK,incr,0,0);
}

int _gettimeofday(struct timeval *tv, void *tz)
{
    return syscall(SYSCALL_GETTIMEOFDAY,tv,tz,0);
}

int _fork(void)
{
    return syscall(SYSCALL_FORK,0,0,0);
}

int _getpid(void)
{
    return syscall(SYSCALL_GETPID,0,0,0);
}

int _kill(int pid, int sig)
{
    return syscall(SYSCALL_KILL,pid,sig,0);
}

int _link(char *old, char *ne)
{
    return syscall(SYSCALL_LINK,old,ne,0);
}

int _unlink(char *name)
{
    return syscall(SYSCALL_UNLINK,name,0,0);
}

int _times(struct tms *buf)
{
    return syscall(SYSCALL_TIMES,buf,0,0);
}

int _wait(int *status)
{
    return syscall(SYSCALL_WAIT,status,0,0);
}

int _stat(const char *file, struct stat *st)
{
    return syscall(SYSCALL_STAT,file,st,0);
}

int _lstat(const char *file, struct stat *st)
{
    return syscall(SYSCALL_LSTAT,file,st,0);
}

int _fstat(int file, struct stat *st)
{
    return syscall(SYSCALL_FSTAT,file,st,0);
}