001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019 #ifndef _SOS_USER_LIBC_H_
020 #define _SOS_USER_LIBC_H_
021
022 #include <types.h>
023
024
025
026
027
028
029
030
031
032
033 void exit (int status)
034 __attribute__((noreturn, alias("_sos_exit")));
035
036
037
038
039
040 pid_t fork(void)
041 __attribute__ ((alias("_sos_fork")));
042
043
044
045
046
047
048 int exec(const char *progname)
049 __attribute__ ((alias("_sos_exec")));
050
051
052 int nanosleep(unsigned long int sec,
053 unsigned long int nanosec)
054 __attribute__ ((alias("_sos_nanosleep")));
055
056
057
058
059
060 #define PROT_NONE 0
061 #define PROT_READ (1<<0)
062 #define PROT_WRITE (1<<1)
063 #define PROT_EXEC (1<<2)
064
065 #define MAP_SHARED (1 << 0)
066 #define MAP_FIXED (1 << 31)
067
068
069
070
071
072
073
074 void * fakemmap(void *start, size_t length, int prot , int flags,
075 const char *path, loff_t offset);
076
077
078
079
080
081 int munmap(void * start, size_t length)
082 __attribute__ ((alias("_sos_munmap")));
083
084
085
086
087
088 int mprotect(const void *addr, size_t len, int prot)
089 __attribute__ ((alias("_sos_mprotect")));
090
091
092
093
094
095
096 #define MREMAP_MAYMOVE (1 << 30)
097
098
099
100
101 void * mremap(void * old_addr, size_t old_len,
102 size_t new_len,
103 unsigned long flags);
104
105
106
107
108
109
110
111 int brk(void *end_data_seg);
112
113
114 void *sbrk(ptrdiff_t increment);
115
116
117 void * calloc (size_t nmemb, size_t size);
118
119
120 void * malloc (size_t size);
121
122
123 void free(void *ptr);
124
125
126
127
128
129
130 int mount(const char *source, const char *target,
131 const char *filesystemtype, unsigned long mountflags,
132 const char *data)
133 __attribute__ ((alias("_sos_mount")));
134 int umount(const char *target)
135 __attribute__ ((alias("_sos_umount")));
136 void sync(void)
137 __attribute__ ((alias("_sos_sync")));
138
139 struct statvfs
140 {
141 size_t f_sz_total;
142 size_t f_sz_free;
143 unsigned int f_node_total;
144 unsigned int f_node_avail;
145 unsigned int f_flags;
146 };
147
148 int statvfs(const char *path, struct statvfs *buf)
149 __attribute__ ((alias("_sos_statvfs")));
150
151 #define O_EXCL (1 << 0)
152 #define O_CREAT (1 << 1)
153 #define O_NOFOLLOW (1 << 2)
154 #define O_DIRECTORY (1 << 3)
155 #define O_SYNC (1 << 4)
156
157 #define O_RDONLY (1 << 16)
158 #define O_WRONLY (1 << 17)
159 #define O_RDWR (O_RDONLY | O_WRONLY)
160
161
162
163
164 #define S_IRUSR 00400
165 #define S_IWUSR 00200
166 #define S_IXUSR 00100
167 #define S_IRWXALL 07777
168
169 int open(const char *pathname, int flags, ...);
170
171 int close(int fd)
172 __attribute__ ((alias("_sos_close")));
173
174 int read(int fd, char * buf, size_t len);
175 int write(int fd, const char * buf, size_t len);
176
177
178 #define SEEK_SET 42
179 #define SEEK_CUR 24
180 #define SEEK_END 84
181 off_t lseek(int fd, off_t offset, int whence);
182 loff_t lseek64(int fd, loff_t offset, int whence);
183 void * mmap(void *start, size_t length, int prot , int flags,
184 int fd, loff_t offset);
185 int ftruncate(int fd, off_t length);
186 int ftruncate64(int fd, loff_t length)
187 __attribute__ ((alias("_sos_ftruncate64")));
188 int fcntl(int fd, int cmd, int arg)
189 __attribute__ ((alias("_sos_fcntl")));
190
191 int creat(const char *pathname, mode_t mode)
192 __attribute__ ((alias("_sos_creat")));
193 int link (const char *oldpath, const char *newpath)
194 __attribute__ ((alias("_sos_link")));
195 int unlink(const char *pathname)
196 __attribute__ ((alias("_sos_unlink")));
197 int rename(const char *oldpath, const char *newpath)
198 __attribute__ ((alias("_sos_rename")));
199 int symlink(const char *target, const char *path)
200 __attribute__ ((alias("_sos_symlink")));
201
202 int mkdir(const char *pathname, mode_t mode)
203 __attribute__ ((alias("_sos_mkdir")));
204 int rmdir(const char *pathname)
205 __attribute__ ((alias("_sos_rmdir")));
206
207 int chmod(const char *path, mode_t mode)
208 __attribute__ ((alias("_sos_chmod")));
209
210 struct dirent
211 {
212 unsigned long long int storage_location;
213 unsigned long long int offset_in_dirfile;
214
215
216 #define S_IFREG 0x42
217 #define S_IFDIR 0x24
218 #define S_IFLNK 0x84
219 unsigned int type;
220 unsigned short namelen;
221
222 #define SOS_FS_DIRENT_NAME_MAXLEN 128
223 char name[SOS_FS_DIRENT_NAME_MAXLEN];
224 };
225
226
227 struct sos_DIR_struct;
228 #define DIR struct sos_DIR_struct
229
230 DIR *opendir(const char *name);
231 int dirfd(const DIR * dir);
232 struct dirent *readdir(DIR *dir);
233 int closedir(DIR *dir);
234
235 struct stat
236 {
237 int st_type;
238 unsigned long long int st_storage_location;
239 int st_access_rights;
240 unsigned int st_nlink;
241 signed long long int st_size;
242 };
243
244 int stat(const char *file_name, struct stat *buf);
245 int lstat(const char *file_name, struct stat *buf);
246
247 int chroot(const char *path)
248 __attribute__ ((alias("_sos_chroot")));
249 int chdir(const char *path)
250 __attribute__ ((alias("_sos_chdir")));
251 int fchdir(int fd)
252 __attribute__ ((alias("_sos_fchdir")));
253
254
255
256 #endif