ulib Move to new pipe syscalls

This commit is contained in:
2025-10-14 08:12:19 +02:00
parent 9108299c31
commit ddb31ac5f5
3 changed files with 27 additions and 6 deletions

View File

@ -4,5 +4,5 @@
#include <printf/printf.h> #include <printf/printf.h>
void putchar_(char c) { void putchar_(char c) {
ipcpipe(-1, IPCPIPE_OUT, IPCPIPE_WRITE, (uint8_t *)&c, 1); ipc_pipewrite(-1, 0, (uint8_t *const)&c, 1);
} }

View File

@ -20,10 +20,6 @@ int32_t processctl(uint64_t pid, uint64_t cmd, uint64_t arg1, uint64_t arg2, uin
return syscall(SYS_PROCESSCTL, pid, cmd, arg1, arg2, arg3, 0); return syscall(SYS_PROCESSCTL, pid, cmd, arg1, arg2, arg3, 0);
} }
int32_t ipcpipe(uint64_t pid, uint64_t pipenum, uint64_t cmd, uint8_t *buffer, size_t len) {
return syscall(SYS_IPCPIPE, pid, pipenum, cmd, (uint64_t)buffer, (uint64_t)len, 0);
}
int32_t mman_map(uint8_t *addr, size_t size, uint64_t prot, uint64_t flags, uint8_t **out) { 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); return syscall(SYS_MMAN_MAP, (uint64_t)addr, (uint64_t)size, prot, flags, (uint64_t)out, 0);
} }
@ -51,3 +47,23 @@ int32_t vfsmount(char *mountpoint, char *fstype, Dev_t *dev, bool format) {
int32_t vfsunmount(char *mountpoint) { int32_t vfsunmount(char *mountpoint) {
return syscall(SYS_VFSUNMOUNT, (uint64_t)mountpoint, 0, 0, 0, 0, 0); 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);
}

View File

@ -5,11 +5,11 @@
#include <stddef.h> #include <stddef.h>
#include <stdbool.h> #include <stdbool.h>
#include <sysdefs/devctl.h> #include <sysdefs/devctl.h>
#include <sysdefs/processctl.h>
void debugprint(const char *string); void debugprint(const char *string);
int32_t ioctl(uint64_t ioh, uint64_t cmd, uint64_t arg1, uint64_t arg2, uint64_t arg3); int32_t ioctl(uint64_t ioh, uint64_t cmd, uint64_t arg1, uint64_t arg2, uint64_t arg3);
int32_t processctl(uint64_t pid, uint64_t cmd, uint64_t arg1, uint64_t arg2, uint64_t arg3); int32_t processctl(uint64_t pid, uint64_t cmd, uint64_t arg1, uint64_t arg2, uint64_t arg3);
int32_t ipcpipe(uint64_t pid, uint64_t pipenum, uint64_t cmd, uint8_t *buffer, size_t len);
int32_t mman_map(uint8_t *addr, size_t size, uint64_t prot, uint64_t flags, uint8_t **out); int32_t mman_map(uint8_t *addr, size_t size, uint64_t prot, uint64_t flags, uint8_t **out);
int32_t mman_unmap(uint8_t *addr); int32_t mman_unmap(uint8_t *addr);
int32_t schedrelease(void); int32_t schedrelease(void);
@ -17,5 +17,10 @@ int32_t devctl(Dev_t *devh, uint64_t cmd, uint8_t *buffer, size_t len, uint64_t
int32_t rand(void); int32_t rand(void);
int32_t vfsmount(char *mountpoint, char *fstype, Dev_t *dev, bool format); int32_t vfsmount(char *mountpoint, char *fstype, Dev_t *dev, bool format);
int32_t vfsunmount(char *mountpoint); int32_t vfsunmount(char *mountpoint);
int32_t ipc_piperead(PID_t pid, uint64_t pipenum, uint8_t *const buffer, size_t len);
int32_t ipc_pipewrite(PID_t pid, uint64_t pipenum, const uint8_t *buffer, size_t len);
int32_t ipc_pipemake(uint64_t pipenum);
int32_t ipc_pipedelete(uint64_t pipenum);
int32_t ipc_pipeconnect(PID_t pid1, uint64_t pipenum1, PID_t pid2, uint64_t pipenum2);
#endif // ULIB_SYSTEM_SYSTEM_H_ #endif // ULIB_SYSTEM_SYSTEM_H_