Simple IPC with pipes
This commit is contained in:
@ -2,7 +2,12 @@
|
||||
#include <stddef.h>
|
||||
#include <system/ioctl.h>
|
||||
#include <sysdefs/ioctl.h>
|
||||
#include <system/system.h>
|
||||
#include <sysdefs/syscall.h>
|
||||
#include <syscall/syscall.h>
|
||||
|
||||
int32_t ioctl(uint64_t ioh, uint64_t cmd, void *extra) {
|
||||
return syscall(SYS_IOCTL, ioh, cmd, (uint64_t)extra, 0, 0, 0);
|
||||
}
|
||||
|
||||
int32_t ioctl_openfile(const char *path, uint64_t flags) {
|
||||
IOCtlOF cfg = { .path = path, .flags = flags };
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
int32_t ioctl(uint64_t ioh, uint64_t cmd, void *extra);
|
||||
int32_t ioctl_openfile(const char *path, uint64_t flags);
|
||||
int32_t ioctl_writefile(int32_t ioh, const uint8_t *const buffer, size_t len, size_t off);
|
||||
int32_t ioctl_readfile(int32_t ioh, uint8_t *const buffer, size_t len, size_t off);
|
||||
|
10
ulib/system/ipcpipe.c
Normal file
10
ulib/system/ipcpipe.c
Normal file
@ -0,0 +1,10 @@
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include "ipcpipe.h"
|
||||
#include <sysdefs/ipcpipe.h>
|
||||
#include <sysdefs/syscall.h>
|
||||
#include <syscall/syscall.h>
|
||||
|
||||
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);
|
||||
}
|
9
ulib/system/ipcpipe.h
Normal file
9
ulib/system/ipcpipe.h
Normal file
@ -0,0 +1,9 @@
|
||||
#ifndef ULIB_SYSTEM_IPCPIPE_H_
|
||||
#define ULIB_SYSTEM_IPCPIPE_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
int32_t ipcpipe(uint64_t pid, uint64_t pipenum, uint64_t cmd, uint8_t *buffer, size_t len);
|
||||
|
||||
#endif // ULIB_SYSTEM_IPCPIPE_H_
|
8
ulib/system/processctl.c
Normal file
8
ulib/system/processctl.c
Normal file
@ -0,0 +1,8 @@
|
||||
#include <stdint.h>
|
||||
#include <sysdefs/processctl.h>
|
||||
#include <sysdefs/syscall.h>
|
||||
#include <syscall/syscall.h>
|
||||
|
||||
int32_t processctl(uint64_t pid, uint64_t cmd, void *extra) {
|
||||
return syscall(SYS_PROCESSCTL, pid, cmd, (uint64_t)extra, 0, 0, 0);
|
||||
}
|
6
ulib/system/processctl.h
Normal file
6
ulib/system/processctl.h
Normal file
@ -0,0 +1,6 @@
|
||||
#ifndef ULIB_SYSTEM_PROCESSCTL_H_
|
||||
#define ULIB_SYSTEM_PROCESSCTL_H_
|
||||
|
||||
int32_t processctl(uint64_t pid, uint64_t cmd, void *extra);
|
||||
|
||||
#endif // ULIB_SYSTEM_PROCESSCTL_H_
|
@ -7,11 +7,3 @@ void debugprint(const char *string) {
|
||||
syscall(SYS_DEBUGPRINT, (uint64_t)string, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
int32_t processctl(uint64_t pid, uint64_t cmd, void *extra) {
|
||||
return syscall(SYS_PROCESSCTL, pid, cmd, (uint64_t)extra, 0, 0, 0);
|
||||
}
|
||||
|
||||
int32_t ioctl(uint64_t ioh, uint64_t cmd, void *extra) {
|
||||
return syscall(SYS_IOCTL, ioh, cmd, (uint64_t)extra, 0, 0, 0);
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,5 @@
|
||||
#include <stdint.h>
|
||||
|
||||
void debugprint(const char *string);
|
||||
int32_t processctl(uint64_t pid, uint64_t cmd, void *extra);
|
||||
int32_t ioctl(uint64_t ioh, uint64_t cmd, void *extra);
|
||||
|
||||
#endif // ULIB_SYSTEM_SYSTEM_H_
|
||||
|
Reference in New Issue
Block a user