userspace/libc: implement read, pread, write & pwrite

Signed-off-by: EnderIce2 <enderice2@protonmail.com>
This commit is contained in:
EnderIce2 2025-02-14 02:17:47 +02:00
parent 92ef18b412
commit dfe9bbdbfa
No known key found for this signature in database
GPG Key ID: 2EE20AF089811A5A
2 changed files with 26 additions and 8 deletions

View File

@ -116,10 +116,10 @@ extern "C"
long int pathconf(const char *, int);
int pause(void);
int pipe(int[2]);
ssize_t pread(int, void *, size_t, off_t);
ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset);
int pthread_atfork(void (*)(void), void (*)(void), void (*)(void));
ssize_t pwrite(int, const void *, size_t, off_t);
ssize_t read(int, void *, size_t);
ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset);
ssize_t read(int fildes, void *buf, size_t nbyte);
int readlink(const char *, char *, size_t);
int rmdir(const char *);
void *sbrk(intptr_t);
@ -144,7 +144,7 @@ extern "C"
int unlink(const char *);
int usleep(useconds_t);
pid_t vfork(void);
ssize_t write(int, const void *, size_t);
ssize_t write(int fildes, const void *buf, size_t nbyte);
#ifdef __cplusplus
}

View File

@ -229,10 +229,24 @@ export int pause(void)
}
export int pipe(int[2]);
export ssize_t pread(int, void *, size_t, off_t);
export ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset)
{
return __check_errno(call_pread(fildes, buf, nbyte, offset), -1);
}
export int pthread_atfork(void (*)(void), void (*)(void), void (*)(void));
export ssize_t pwrite(int, const void *, size_t, off_t);
export ssize_t read(int, void *, size_t);
export ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset)
{
return __check_errno(call_pwrite(fildes, buf, nbyte, offset), -1);
}
export ssize_t read(int fildes, void *buf, size_t nbyte)
{
return __check_errno(call_read(fildes, buf, nbyte), -1);
}
export int readlink(const char *, char *, size_t);
export int rmdir(const char *);
export void *sbrk(intptr_t);
@ -278,4 +292,8 @@ export useconds_t ualarm(useconds_t, useconds_t);
export int unlink(const char *);
export int usleep(useconds_t);
export pid_t vfork(void);
export ssize_t write(int, const void *, size_t);
export ssize_t write(int fildes, const void *buf, size_t nbyte)
{
return __check_errno(call_write(fildes, buf, nbyte), -1);
}