Files
mkrtos-real/mkrtos_user/lib/libc_backend/inc/syscall_backend.h

168 lines
7.6 KiB
C
Raw Normal View History

2023-08-23 00:42:36 +08:00
#pragma once
#include "fs_backend.h"
#include "u_types.h"
#include <sys/uio.h>
2023-12-02 22:02:56 +08:00
#include <sys/stat.h>
2025-01-08 20:21:09 +08:00
#include <time.h>
2025-02-05 09:10:55 +08:00
#include <sys/socket.h>
#include <sys/ipc.h>
#include "sys/shm.h"
#include <poll.h>
// typedef int key_t;
#define ARG_1_BE(ap, arg0, type0) \
do \
{ \
arg0 = (type0)va_arg(ap, long); \
} while (0)
#define ARG_2_BE(ap, arg0, type0, arg1, type1) \
do \
{ \
arg0 = (type0)va_arg(ap, long); \
arg1 = (type1)va_arg(ap, long); \
} while (0)
#define ARG_3_BE(ap, arg0, type0, arg1, type1, arg2, type2) \
do \
{ \
arg0 = (type0)va_arg(ap, long); \
arg1 = (type1)va_arg(ap, long); \
arg2 = (type2)va_arg(ap, long); \
} while (0)
2023-11-20 18:12:37 +08:00
#define ARG_4_BE(ap, arg0, type0, arg1, type1, arg2, type2, arg3, type3) \
do \
{ \
arg0 = (type0)va_arg(ap, long); \
arg1 = (type1)va_arg(ap, long); \
arg2 = (type2)va_arg(ap, long); \
arg3 = (type3)va_arg(ap, long); \
} while (0)
#define ARG_5_BE(ap, arg0, type0, arg1, type1, arg2, type2, arg3, type3, arg4, type4) \
do \
{ \
arg0 = (type0)va_arg(ap, long); \
arg1 = (type1)va_arg(ap, long); \
arg2 = (type2)va_arg(ap, long); \
arg3 = (type3)va_arg(ap, long); \
arg4 = (type4)va_arg(ap, long); \
} while (0)
#define ARG_6_BE(ap, arg0, type0, arg1, type1, arg2, type2, arg3, type3, arg4, type4, arg5, type5) \
do \
{ \
arg0 = (type0)va_arg(ap, long); \
arg1 = (type1)va_arg(ap, long); \
arg2 = (type2)va_arg(ap, long); \
arg3 = (type3)va_arg(ap, long); \
arg4 = (type4)va_arg(ap, long); \
arg5 = (type5)va_arg(ap, long); \
} while (0)
2023-08-23 00:42:36 +08:00
#define ARG_7_BE(ap, arg0, type0, arg1, type1, arg2, type2, \
arg3, type3, arg4, type4, arg5, type5, arg6, type6) \
do \
{ \
arg0 = (type0)va_arg(ap, long); \
arg1 = (type1)va_arg(ap, long); \
arg2 = (type2)va_arg(ap, long); \
arg3 = (type3)va_arg(ap, long); \
arg4 = (type4)va_arg(ap, long); \
arg5 = (type5)va_arg(ap, long); \
arg6 = (type6)va_arg(ap, long); \
} while (0)
2023-08-23 00:42:36 +08:00
long syscall_backend(long sys_inx, ...);
2023-11-18 23:31:00 +08:00
void fs_backend_init(void);
2023-12-02 22:02:56 +08:00
long be_lseek(long fd, long offset, long whence);
int be_open(const char *path, int flags, mode_t mode);
int be_close(int fd);
2025-01-06 19:07:10 +08:00
void be_exit(long exit_code);
umword_t be_mmap2(void *start,
size_t len,
long prot,
long flags,
long fd,
long _offset);
long be_read(long fd, char *buf, long size);
long be_write(long fd, char *buf, long size);
2023-12-02 09:42:22 +08:00
long be_readv(long fd, const struct iovec *iov, long iovcnt);
long be_writev(long fd, const struct iovec *iov, long iovcnt);
long be_ioctl(long fd, long req, void *args);
long be_set_tid_address(int *val);
long be_set_thread_area(void *p);
2025-01-06 19:07:10 +08:00
long be_getdents(long fd, char *buf, size_t size);
2024-11-11 08:59:39 +08:00
long be_mkdir(const char *path, mode_t mode);
2025-01-06 19:07:10 +08:00
long be_symlink(const char *src, const char *dst);
2025-01-08 20:21:09 +08:00
long be_stat(const char *path, void *buf);
2025-01-25 15:29:06 +08:00
long be_unlink(const char *path);
2025-01-06 19:07:10 +08:00
int be_clone(int (*func)(void *), void *stack, int flags, void *args, pid_t *ptid, void *tls, pid_t *ctid);
2025-01-26 11:54:01 +08:00
long be_munmap(void *start, size_t len);
umword_t be_mmap(void *start,
size_t len,
long prot,
long flags,
long fd,
long _offset);
int be_fcntl(int fd, int cmd, void *arg);
long be_chdir(const char *path);
long be_ftruncate(int fd, off_t off);
long be_poll(struct pollfd *fds, uint32_t n, int timeout);
long be_fstat(int fd, void *_buf);
long be_getcwd(char *path, size_t size);
int be_access(const char *filename, int amode);
2025-02-05 09:10:55 +08:00
// net api
int be_accept(int s, struct sockaddr *addr, socklen_t *addrlen);
int be_bind(int s, const struct sockaddr *name, socklen_t namelen);
int be_shutdown(int s, int how);
int be_getpeername(int s, struct sockaddr *name, socklen_t *namelen);
int be_getsockname(int s, struct sockaddr *name, socklen_t *namelen);
int be_getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen);
int be_setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);
int be_connect(int s, const struct sockaddr *name, socklen_t namelen);
int be_listen(int s, int backlog);
ssize_t be_recv(int s, void *mem, size_t len, int flags);
ssize_t be_recvfrom(int s, void *mem, size_t len, int flags,
struct sockaddr *from, socklen_t *fromlen);
ssize_t be_send(int s, const void *dataptr, size_t size, int flags);
ssize_t be_sendto(int s, const void *dataptr, size_t size, int flags,
const struct sockaddr *to, socklen_t tolen);
int be_socket(int domain, int type, int protocol);
// end net api
2024-01-07 23:32:30 +08:00
long be_clock_gettime(clockid_t clk_id, struct timespec *tp);
//shm
int be_shm_open(const char *name, int flag, mode_t mode);
int be_inner_shm_ftruncate(sd_t fd, size_t size);
int be_shm_unlink(const char *path);
long be_shm_mmap(void *start,
size_t len,
long prot,
long flags,
sd_t sd,
long _offset);
int be_shmget(key_t key, size_t size, int flag);
void *be_shmat(int id, const void *addr, int flag);
int be_shmdt(const void *addr);
int be_shmctl(int id, int cmd, struct shmid_ds *buf);
long sys_mmap(va_list ap);
long sys_set_tid_address(va_list ap);
long sys_set_thread_area(va_list ap);
long sys_exit(va_list ap);
2024-04-04 16:51:29 +00:00
long sys_munmap(va_list ap);
long sys__clone(va_list ap);
long sys_futex(va_list ap);
long sys_clock_nanosleep(va_list ap);
long sys_nanosleep(va_list ap);
2023-11-19 23:01:35 +08:00
int be_futex(uint32_t *uaddr, int futex_op, uint32_t val,
const struct timespec *timeout, uint32_t uaddr2, uint32_t val3);
2023-11-20 16:46:50 +08:00
void pthread_cnt_inc(void);
int pthread_cnt_dec(void);
int pthread_get(void);