1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

cpu/native: wire up more fs related syscalls

This commit is contained in:
Benjamin Valentin 2023-02-24 21:29:49 +01:00 committed by Benjamin Valentin
parent 8ec1934226
commit 006ad81c0c
2 changed files with 32 additions and 0 deletions

View File

@ -59,7 +59,9 @@
#include <time.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <sys/statvfs.h>
#include <sys/uio.h>
#include <dirent.h>
#ifdef __cplusplus
extern "C" {
@ -90,6 +92,10 @@ void _native_init_syscalls(void);
*/
extern ssize_t (*real_read)(int fd, void *buf, size_t count);
extern ssize_t (*real_write)(int fd, const void *buf, size_t count);
extern off_t (*real_lseek)(int fd, off_t offset, int whence);
extern off_t (*real_fstat)(int fd, struct stat *statbuf);
extern int (*real_statvfs)(const char *restrict path, struct statvfs *restrict buf);
extern int (*real_fsync)(int fd);
extern size_t (*real_fread)(void *ptr, size_t size, size_t nmemb, FILE *stream);
extern void (*real_clearerr)(FILE *stream);
extern __attribute__((noreturn)) void (*real_exit)(int status);
@ -124,6 +130,11 @@ extern int (*real_gettimeofday)(struct timeval *t, ...);
extern int (*real_ioctl)(int fildes, int request, ...);
extern int (*real_listen)(int socket, int backlog);
extern int (*real_open)(const char *path, int oflag, ...);
extern int (*real_mkdir)(const char *pathname, mode_t mode);
extern int (*real_rmdir)(const char *pathname);
extern DIR *(*real_opendir)(const char *name);
extern struct dirent *(*real_readdir)(DIR *dirp);
extern int (*real_closedir)(DIR *dirp);
extern int (*real_pause)(void);
extern int (*real_pipe)(int[2]);
/* The ... is a hack to save includes: */
@ -136,6 +147,7 @@ extern int (*real_setsockopt)(int socket, ...);
extern int (*real_socket)(int domain, int type, int protocol);
extern int (*real_printf)(const char *format, ...);
extern int (*real_unlink)(const char *);
extern int (*real_rename)(const char *, const char *);
extern long int (*real_random)(void);
extern const char* (*real_gai_strerror)(int errcode);
extern FILE* (*real_fopen)(const char *path, const char *mode);

View File

@ -105,6 +105,16 @@ int (*real_fgetc)(FILE *stream);
mode_t (*real_umask)(mode_t cmask);
ssize_t (*real_writev)(int fildes, const struct iovec *iov, int iovcnt);
ssize_t (*real_send)(int sockfd, const void *buf, size_t len, int flags);
off_t (*real_lseek)(int fd, off_t offset, int whence);
off_t (*real_fstat)(int fd, struct stat *statbuf);
int (*real_fsync)(int fd);
int (*real_mkdir)(const char *pathname, mode_t mode);
int (*real_rmdir)(const char *pathname);
DIR *(*real_opendir)(const char *name);
struct dirent *(*real_readdir)(DIR *dirp);
int (*real_closedir)(DIR *dirp);
int (*real_rename)(const char *, const char *);
int (*real_statvfs)(const char *restrict path, struct statvfs *restrict buf);
void _native_syscall_enter(void)
{
@ -549,4 +559,14 @@ void _native_init_syscalls(void)
*(void **)(&real_ftell) = dlsym(RTLD_NEXT, "ftell");
*(void **)(&real_fputc) = dlsym(RTLD_NEXT, "fputc");
*(void **)(&real_fgetc) = dlsym(RTLD_NEXT, "fgetc");
*(void **)(&real_mkdir) = dlsym(RTLD_NEXT, "mkdir");
*(void **)(&real_rmdir) = dlsym(RTLD_NEXT, "rmdir");
*(void **)(&real_lseek) = dlsym(RTLD_NEXT, "lseek");
*(void **)(&real_fstat) = dlsym(RTLD_NEXT, "fstat");
*(void **)(&real_fsync) = dlsym(RTLD_NEXT, "fsync");
*(void **)(&real_rename) = dlsym(RTLD_NEXT, "rename");
*(void **)(&real_opendir) = dlsym(RTLD_NEXT, "opendir");
*(void **)(&real_readdir) = dlsym(RTLD_NEXT, "readdir");
*(void **)(&real_closedir) = dlsym(RTLD_NEXT, "closedir");
*(void **)(&real_statvfs) = dlsym(RTLD_NEXT, "statvfs");
}