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
035
036
037
038
039 pid_t fork(void);
040
041
042
043
044
045
046 int exec(const char *progname);
047
048
049 int nanosleep(unsigned long int sec,
050 unsigned long int nanosec);
051
052
053 int sleep(unsigned int seconds);
054
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 int munmap(void * start, size_t length);
073
074
075
076
077
078 int mprotect(const void *addr, size_t len, int prot);
079
080
081
082
083
084 #define MREMAP_MAYMOVE (1 << 30)
085
086
087
088
089 void * mremap(void * old_addr, size_t old_len,
090 size_t new_len,
091 unsigned long flags);
092
093
094
095
096
097
098
099 int brk(void *end_data_seg);
100
101
102 void *sbrk(ptrdiff_t increment);
103
104
105 void * calloc (size_t nmemb, size_t size);
106
107
108 void * malloc (size_t size);
109
110
111 void free(void *ptr);
112
113
114
115
116
117
118 int mount(const char *source, const char *target,
119 const char *filesystemtype, unsigned long mountflags,
120 const char *data);
121
122
123 int umount(const char *target);
124
125
126 void sync(void);
127
128
129 struct statvfs
130 {
131 unsigned int f_rdev_major;
132 unsigned int f_rdev_minor;
133 size_t f_sz_total;
134 size_t f_sz_free;
135 unsigned int f_node_total;
136 unsigned int f_node_avail;
137 unsigned int f_flags;
138 };
139
140 int statvfs(const char *path, struct statvfs *buf);
141
142
143 #define O_EXCL (1 << 0)
144 #define O_CREAT (1 << 1)
145 #define O_TRUNC (1 << 2)
146 #define O_NOFOLLOW (1 << 3)
147 #define O_DIRECTORY (1 << 4)
148 #define O_SYNC (1 << 5)
149
150 #define O_RDONLY (1 << 16)
151 #define O_WRONLY (1 << 17)
152 #define O_RDWR (O_RDONLY | O_WRONLY)
153
154
155
156
157 #define S_IRUSR 00400
158 #define S_IWUSR 00200
159 #define S_IXUSR 00100
160 #define S_IRWXALL 07777
161
162 int open(const char *pathname, int flags, ...);
163
164 int close(int fd);
165
166
167 int read(int fd, char * buf, size_t len);
168 int write(int fd, const char * buf, size_t len);
169
170
171 #define SEEK_SET 42
172 #define SEEK_CUR 24
173 #define SEEK_END 84
174 off_t lseek(int fd, off_t offset, int whence);
175 loff_t lseek64(int fd, loff_t offset, int whence);
176 void * mmap(void *start, size_t length, int prot , int flags,
177 int fd, loff_t offset);
178 int ftruncate(int fd, off_t length);
179 int ftruncate64(int fd, loff_t length);
180 int fcntl(int fd, int cmd, int arg);
181 int ioctl(int fd, int cmd, int arg);
182
183 int creat(const char *pathname, mode_t mode);
184 int link (const char *oldpath, const char *newpath);
185 int unlink(const char *pathname);
186 int rename(const char *oldpath, const char *newpath);
187 int symlink(const char *target, const char *path);
188
189
190 #define S_IFREG 0x42
191 #define S_IFDIR 0x24
192 #define S_IFLNK 0x84
193 #define S_IFCHR 0x48
194 int mknod(const char *pathname, mode_t mode,
195 int type,
196 unsigned int major, unsigned minor);
197
198
199 int mkdir(const char *pathname, mode_t mode);
200
201
202 int rmdir(const char *pathname);
203
204
205 int chmod(const char *path, mode_t mode);
206
207
208 struct dirent
209 {
210 unsigned long long int storage_location;
211 unsigned long long int offset_in_dirfile;
212 unsigned int type;
213 unsigned short namelen;
214
215 #define SOS_FS_DIRENT_NAME_MAXLEN 128
216 char name[SOS_FS_DIRENT_NAME_MAXLEN];
217 };
218
219
220 struct sos_DIR_struct;
221 #define DIR struct sos_DIR_struct
222
223 DIR *opendir(const char *name);
224 int dirfd(const DIR * dir);
225 struct dirent *readdir(DIR *dir);
226 int closedir(DIR *dir);
227
228 struct stat
229 {
230 unsigned int st_rdev_major;
231 unsigned int st_rdev_minor;
232 int st_type;
233 unsigned long long int st_storage_location;
234 int st_access_rights;
235 unsigned int st_nlink;
236 signed long long int st_size;
237 };
238
239 int stat(const char *file_name, struct stat *buf);
240 int lstat(const char *file_name, struct stat *buf);
241 int chroot(const char *path);
242 int chdir(const char *path);
243 int fchdir(int fd);
244
245 int printf(const char *, ...);
246
247 #endif