001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019 #ifndef _SOS_USER_CRT_H_
020 #define _SOS_USER_CRT_H_
021
022
023
024
025
026
027
028
029
030 #include <types.h>
031
032
033
034
035
036 #include <sos/syscall.h>
037
038
039
040
041
042 int _sos_syscall0(int id);
043
044 int _sos_syscall1(int id,
045 unsigned int arg1);
046
047 int _sos_syscall2(int id,
048 unsigned int arg1,
049 unsigned int arg2);
050
051 int _sos_syscall3(int id,
052 unsigned int arg1,
053 unsigned int arg2,
054 unsigned int arg3);
055
056 int _sos_syscall4(int id,
057 unsigned int arg1,
058 unsigned int arg2,
059 unsigned int arg3,
060 unsigned int arg4);
061
062 int _sos_syscall5(int id,
063 unsigned int arg1,
064 unsigned int arg2,
065 unsigned int arg3,
066 unsigned int arg4,
067 unsigned int arg5);
068
069 int _sos_syscall6(int id,
070 unsigned int arg1,
071 unsigned int arg2,
072 unsigned int arg3,
073 unsigned int arg4,
074 unsigned int arg5,
075 unsigned int arg6);
076
077 int _sos_syscall7(int id,
078 unsigned int arg1,
079 unsigned int arg2,
080 unsigned int arg3,
081 unsigned int arg4,
082 unsigned int arg5,
083 unsigned int arg6,
084 unsigned int arg7);
085
086 int _sos_syscall8(int id,
087 unsigned int arg1,
088 unsigned int arg2,
089 unsigned int arg3,
090 unsigned int arg4,
091 unsigned int arg5,
092 unsigned int arg6,
093 unsigned int arg7,
094 unsigned int arg8);
095
096
097
098
099
100 void _sos_exit (int status) __attribute__((noreturn));
101
102
103
104
105
106 int _sos_bochs_write(const char *str, unsigned length);
107
108
109
110
111 int _sos_fork(void);
112
113
114
115
116
117
118 int _sos_exec(const char * prog);
119
120
121
122
123
124 int _sos_munmap(void * start, size_t length);
125
126
127
128
129
130
131 int _sos_mprotect(const void *addr, size_t len, int prot);
132
133
134
135
136
137
138 int _sos_mresize(void * old_addr, size_t old_len,
139 void * *new_addr, size_t new_len,
140 unsigned long flags);
141
142
143
144
145
146 int _sos_msync(void *start, size_t length, int flags);
147
148
149
150
151
152 typedef void (sos_thread_func_t(unsigned long int arg));
153
154
155
156
157 int _sos_new_thread(sos_thread_func_t *func,
158 void * arg,
159 size_t stack_size);
160
161
162
163
164
165 int _sos_nanosleep(unsigned long int sec,
166 unsigned long int nanosec);
167
168
169
170
171
172 void * _sos_brk(void * new_top_address);
173
174
175 int _sos_mount(const char *source, const char *target,
176 const char *filesystemtype, unsigned long mountflags,
177 const char *data);
178 int _sos_umount(const char *target);
179
180 void _sos_sync(void);
181
182 struct statvfs;
183 int _sos_statvfs(const char *path, struct statvfs *buf);
184
185 int _sos_open(const char * pathname, int flags, int mode);
186 int _sos_close(int fd);
187
188 int _sos_read(int fd, char * buf, size_t * len);
189 int _sos_write(int fd, const char * buf, size_t * len);
190 int _sos_seek64(int fd, loff_t * offset, int whence);
191 int _sos_ftruncate64(int fd, loff_t length);
192 int _sos_fmmap(void ** ptr_hint_addr, size_t len, int prot, int flags,
193 int fd, loff_t offset);
194 int _sos_fcntl(int fd, int cmd, int arg);
195 int _sos_ioctl(int fd, int cmd, int arg);
196
197 struct dirent;
198 int _sos_readdir(int fd, struct dirent * dirent);
199
200 int _sos_creat(const char *pathname, int mode);
201 int _sos_link (const char *oldpath, const char *newpath);
202 int _sos_unlink(const char *pathname);
203 int _sos_rename (const char *oldpath, const char *newpath);
204 int _sos_symlink(const char *target, const char *path);
205 int _sos_mknod(const char *pathname, mode_t mode,
206 int type,
207 unsigned int major, unsigned minor);
208
209 int _sos_mkdir(const char *pathname, mode_t mode);
210 int _sos_rmdir(const char *pathname);
211
212 int _sos_chmod(const char *pathname, mode_t mode);
213
214 struct stat;
215 int _sos_stat(const char *pathname, int nofollow, struct stat * st);
216
217 int _sos_chroot(const char *dirname);
218 int _sos_chdir(const char *dirname);
219 int _sos_fchdir(int fd);
220
221 #endif