102 lines
3.2 KiB
C
102 lines
3.2 KiB
C
#include <stdint.h>
|
|
#include <system/system.h>
|
|
#include <syscall/syscall.h>
|
|
#include <sysdefs/syscall.h>
|
|
#include <sysdefs/ioctl.h>
|
|
#include <sysdefs/proc.h>
|
|
#include <sysdefs/devctl.h>
|
|
#include <uprintf.h>
|
|
|
|
void debugprint(const char *string) {
|
|
syscall(SYS_DEBUGPRINT, (uint64_t)string, 0, 0, 0, 0, 0);
|
|
}
|
|
|
|
int32_t ioctl(uint64_t ioh, uint64_t cmd, uint64_t arg1, uint64_t arg2, uint64_t arg3) {
|
|
return syscall(SYS_IOCTL, ioh, cmd, arg1, arg2, arg3, 0);
|
|
}
|
|
|
|
int32_t mman_map(uint8_t *addr, size_t size, uint64_t prot, uint64_t flags, uint8_t **out) {
|
|
return syscall(SYS_MMAN_MAP, (uint64_t)addr, (uint64_t)size, prot, flags, (uint64_t)out, 0);
|
|
}
|
|
|
|
int32_t mman_unmap(uint8_t *addr) {
|
|
return syscall(SYS_MMAN_UNMAP, (uint64_t)addr, 0, 0, 0, 0, 0);
|
|
}
|
|
|
|
int32_t schedrelease(void) {
|
|
return syscall(SYS_SCHEDRELEASE, 0, 0, 0, 0, 0, 0);
|
|
}
|
|
|
|
int32_t devctl(Dev_t *devh, uint64_t cmd, uint8_t *buffer, size_t len, uint64_t extra) {
|
|
return syscall(SYS_DEVCTL, (uint64_t)devh, cmd, (uint64_t)buffer, (uint64_t)len, (uint64_t)extra, 0);
|
|
}
|
|
|
|
int32_t rand(void) {
|
|
return syscall(SYS_RAND, 0, 0, 0, 0, 0, 0);
|
|
}
|
|
|
|
int32_t vfsmount(char *mountpoint, char *fstype, Dev_t *dev, bool format) {
|
|
return syscall(SYS_VFSMOUNT, (uint64_t)mountpoint, (uint64_t)fstype, (uint64_t)dev, (uint64_t)format, 0, 0);
|
|
}
|
|
|
|
int32_t vfsunmount(char *mountpoint) {
|
|
return syscall(SYS_VFSUNMOUNT, (uint64_t)mountpoint, 0, 0, 0, 0, 0);
|
|
}
|
|
|
|
int32_t ipc_piperead(PID_t pid, uint64_t pipenum, uint8_t *const buffer, size_t len) {
|
|
return syscall(SYS_IPC_PIPEREAD, (uint64_t)pid, (uint64_t)pipenum, (uint64_t)buffer, (uint64_t)len, 0, 0);
|
|
}
|
|
|
|
int32_t ipc_pipewrite(PID_t pid, uint64_t pipenum, const uint8_t *buffer, size_t len) {
|
|
return syscall(SYS_IPC_PIPEWRITE, (uint64_t)pid, (uint64_t)pipenum, (uint64_t)buffer, (uint64_t)len, 0, 0);
|
|
}
|
|
|
|
int32_t ipc_pipemake(uint64_t pipenum) {
|
|
return syscall(SYS_IPC_PIPEMAKE, pipenum, 0, 0, 0, 0, 0);
|
|
}
|
|
|
|
int32_t ipc_pipedelete(uint64_t pipenum) {
|
|
return syscall(SYS_IPC_PIPEDELETE, pipenum, 0, 0, 0, 0, 0);
|
|
}
|
|
|
|
int32_t ipc_pipeconnect(PID_t pid1, uint64_t pipenum1, PID_t pid2, uint64_t pipenum2) {
|
|
return syscall(SYS_IPC_PIPECONNECT, pid1, pipenum1, pid2, pipenum2, 0, 0);
|
|
}
|
|
|
|
int32_t proc_kill(PID_t pid) {
|
|
return syscall(SYS_PROC_KILL, (uint64_t)pid, 0, 0, 0, 0, 0);
|
|
}
|
|
|
|
int32_t proc_spawn(char *path, char **args1, size_t argslen1) {
|
|
return syscall(SYS_PROC_SPAWN, (uint64_t)path, (uint64_t)args1, (uint64_t)argslen1, 0, 0, 0);
|
|
}
|
|
|
|
int32_t proc_pollstate(PID_t pid) {
|
|
return syscall(SYS_PROC_POLLSTATE, (uint64_t)pid, 0, 0, 0, 0, 0);
|
|
}
|
|
|
|
int32_t proc_getpid(void) {
|
|
return syscall(SYS_PROC_GETPID, 0, 0, 0, 0, 0, 0);
|
|
}
|
|
|
|
int32_t proc_run(PID_t pid) {
|
|
return syscall(SYS_PROC_RUN, (uint64_t)pid, 0, 0, 0, 0, 0);
|
|
}
|
|
|
|
int32_t proc_arglen(PID_t pid) {
|
|
return syscall(SYS_PROC_ARGLEN, (uint64_t)pid, 0, 0, 0, 0, 0);
|
|
}
|
|
|
|
int32_t proc_argv(PID_t pid, size_t *argslen1, char **argbuf1, size_t maxargs) {
|
|
return syscall(SYS_PROC_ARGV, (uint64_t)pid, (uint64_t)argslen1, (uint64_t)argbuf1, (uint64_t)maxargs, 0, 0);
|
|
}
|
|
|
|
int32_t proc_listsize(void) {
|
|
return syscall(SYS_PROC_LISTSIZE, 0, 0, 0, 0, 0, 0);
|
|
}
|
|
|
|
int32_t proc_stat(size_t idx, ProcStat *pstat) {
|
|
return syscall(SYS_PROC_STAT, (uint64_t)idx, (uint64_t)pstat, 0, 0, 0, 0);
|
|
}
|
|
|