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