20#include "pedigree/kernel/Log.h"
21#include "pedigree/kernel/linker/KernelElf.h"
22#include "pedigree/kernel/machine/KeymapManager.h"
23#include "pedigree/kernel/process/Process.h"
24#include "pedigree/kernel/process/TerminationDeferral.h"
25#include "pedigree/kernel/process/Thread.h"
26#include "pedigree/kernel/process/eventNumbers.h"
27#include "pedigree/kernel/processor/Processor.h"
28#include "pedigree/kernel/processor/SyscallManager.h"
29#include "pedigree/kernel/syscallError.h"
31#include "modules/system/vfs/File.h"
33#include "modules/system/vfs/MountView.h"
34#include "modules/system/vfs/VFS.h"
35#include "pedigree-syscalls.h"
40void pedigree_module_load(
char* _file) {
43 auto context = process->acquireFilesystemContext();
47 if (!view || !context ||
49 SYSCALL_ERROR(DoesNotExist);
52 File* file = selected->node();
56 SYSCALL_ERROR(IsADirectory);
69int pedigree_module_unload(
char* name) {
74int pedigree_module_is_loaded(
char* name) {
79int pedigree_module_get_depending(
char* name,
char* buf,
size_t bufsz) {
82 StringCopyN(buf, dep, bufsz);
88void pedigree_input_inhibit_events(
int inhibit) {
90 pThread->
inhibitEvent(EventNumbers::InputEvent, inhibit == 1);
93int pedigree_load_keymap(uint32_t* buf,
size_t len) {
102int pedigree_event_return() {
104 SYSCALL_ERROR(InvalidArgument);
110void* pedigree_sys_request_mem(
size_t len) {
112 uintptr_t mapAddress = 0;
113 if (!pProcess->allocateUserRange(Process::UserRegion::Dynamic, len, mapAddress)) {
114 if (!pProcess->allocateUserRange(Process::UserRegion::Normal, len, mapAddress)) {
119 return reinterpret_cast<void*
>(mapAddress);
122void pedigree_haltfs() {
125 NOTICE(
"Stubbed: pedigree_haltfs");
Memory-mapped file interface.
virtual bool isDirectory()
char * getDependingModule(char *name)
bool unloadModule(const char *name, bool silent=false, bool progress=true)
static KernelElf & instance()
Module * loadModule(uint8_t *pModule, size_t len, bool silent=false)
static KeymapManager & instance()
Singleton design.
void unmap(MemoryMappedObject *pObj)
static MemoryMapManager & instance()
MemoryMappedObject * mapFile(File *pFile, uintptr_t &address, size_t length, MemoryMappedObject::Permissions perms, size_t offset=0, bool bCopyOnWrite=true)
static ProcessorInformation & information()
static EXPORTED_PUBLIC SyscallManager & instance()
void inhibitEvent(size_t eventNumber, bool bInhibit)