Files
bsb2/kernel/syscall/skeleton.h
2026-02-25 00:33:16 +01:00

38 lines
1.2 KiB
C++

#pragma once
#include "arch/idt.h"
#include "types.h"
#include "../memory/pagetable.h"
struct Vault;
namespace Syscall {
/*! \brief Implementation of the functionality provided via syscalls
*/
namespace Skeleton {
size_t test(Vault &vault, size_t p1, size_t p2, size_t p3, size_t p4,
size_t p5);
int getpid(Vault &vault);
size_t write(Vault &vault, uint32_t id, const void *buffer, size_t size, int x, int y);
size_t read(Vault &vault, uint32_t id, void *buf, size_t len);
void sleep(Vault &vault, size_t ms);
bool sem_init(Vault &vault, size_t id, uint32_t value);
bool sem_destroy(Vault &vault, size_t id);
bool sem_signal(Vault &vault, size_t id);
bool sem_wait(Vault &vault, size_t id);
void exit(Vault &vault);
void kill(Vault &vault, size_t pid);
void* map(Vault *vault, size_t size);
int unmap(Vault &vault, void* start, size_t size);
void invlpg(uintptr_t virt_addr);
bool send(Vault &vault, int pid, const void* sbuffer, size_t ssize, void* rbuffer, size_t rsize);
int receive(Vault &vault, void* buffer, size_t size);
bool reply(Vault &vaul, const void* buffer, size_t size);
int fork(Vault &vault, InterruptContext *user);
} // namespace Skeleton
} // namespace Syscall