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) __attribute__((noreturn !! 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) __attribute__ ((alias("_sos_ !! 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) __attribute__ ( !! 048 int exec(const char *progname)
>> 049 __attribute__ ((alias("_sos_exec")));
047 050
048 051
>> 052 int nanosleep(unsigned long int sec,
>> 053 unsigned long int nanosec)
>> 054 __attribute__ ((alias("_sos_nanosleep")));
>> 055
049 056
050 057
051 058
052 059
053 #define PROT_NONE 0 060 #define PROT_NONE 0
054 #define PROT_READ (1<<0) 061 #define PROT_READ (1<<0)
055 #define PROT_WRITE (1<<1) 062 #define PROT_WRITE (1<<1)
056 #define PROT_EXEC (1<<2) 063 #define PROT_EXEC (1<<2)
057 064
058 #define MAP_SHARED (1 << 0) 065 #define MAP_SHARED (1 << 0)
059 #define MAP_FIXED (1 << 31) 066 #define MAP_FIXED (1 << 31)
060 067
061 068
062 069
063 070
064 071
065 072
066 073
067 void * mmap(void *start, size_t length, int pr !! 074 void * fakemmap(void *start, size_t length, int prot , int flags,
068 const char *path, loff_t offset); !! 075 const char *path, loff_t offset);
069 076
070 077
071 078
072 079
073 080
074 int munmap(void * start, size_t length) __attr !! 081 int munmap(void * start, size_t length)
>> 082 __attribute__ ((alias("_sos_munmap")));
075 083
076 084
077 085
078 086
079 087
080 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")));
081 090
082 091
083 092
084 093
085 094
086 095
087 #define MREMAP_MAYMOVE (1 << 30) 096 #define MREMAP_MAYMOVE (1 << 30)
088 097
089 098
090 099
091 100
092 void * mremap(void * old_addr, size_t old_len, 101 void * mremap(void * old_addr, size_t old_len,
093 size_t new_len, 102 size_t new_len,
094 unsigned long flags); 103 unsigned long flags);
095 104
096 105
097 106
098 107
099 108
100 109
101 110
102 int brk(void *end_data_seg); 111 int brk(void *end_data_seg);
103 112
104 113
105 void *sbrk(ptrdiff_t increment); 114 void *sbrk(ptrdiff_t increment);
106 115
107 116
108 void * calloc (size_t nmemb, size_t size); 117 void * calloc (size_t nmemb, size_t size);
109 118
110 119
111 void * malloc (size_t size); 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
112 254
113 255
114 #endif 256 #endif