kernel: Add processes and rework VFS access checking #48
@ -91,6 +91,9 @@ void handle_cpu_exception(int signo, const char* err, Registers* regs)
|
|||||||
auto* current = Scheduler::current();
|
auto* current = Scheduler::current();
|
||||||
if (current->check_stack_on_exception(regs->rsp)) return;
|
if (current->check_stack_on_exception(regs->rsp)) return;
|
||||||
|
|
||||||
|
auto space = current->process->address_space.lock();
|
||||||
|
(*space)->debug_log();
|
||||||
|
|
||||||
current->send_signal(signo);
|
current->send_signal(signo);
|
||||||
current->process_pending_signals(regs);
|
current->process_pending_signals(regs);
|
||||||
return;
|
return;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include "memory/AddressSpace.h"
|
#include "memory/AddressSpace.h"
|
||||||
|
#include "Log.h"
|
||||||
#include "arch/MMU.h"
|
#include "arch/MMU.h"
|
||||||
#include "memory/Heap.h"
|
#include "memory/Heap.h"
|
||||||
#include "memory/MemoryManager.h"
|
#include "memory/MemoryManager.h"
|
||||||
@ -385,3 +386,13 @@ void VMRegion::sync_shared()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AddressSpace::debug_log()
|
||||||
|
{
|
||||||
|
m_regions.for_each([this](VMRegion* region) {
|
||||||
|
kdbgln("VMRegion start: %p, end: %p, count: %zu, used: %s, persistent: %s, flags: %d, prot: %d, shmid: %lu, "
|
||||||
|
"offset: %ld",
|
||||||
|
(void*)region->start, (void*)region->end, region->count, region->used ? "true" : "false",
|
||||||
|
region->persistent ? "true" : "false", region->flags, region->prot, region->shmid, region->offset);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@ -15,7 +15,7 @@ class VMRegion : LinkedListNode<VMRegion>
|
|||||||
bool persistent { false };
|
bool persistent { false };
|
||||||
int flags { 0 };
|
int flags { 0 };
|
||||||
int prot { 0 };
|
int prot { 0 };
|
||||||
u64 shmid;
|
u64 shmid { 0 };
|
||||||
off_t offset { 0 };
|
off_t offset { 0 };
|
||||||
|
|
||||||
void cleanup_shared();
|
void cleanup_shared();
|
||||||
@ -52,6 +52,8 @@ class AddressSpace
|
|||||||
|
|
||||||
static Result<OwnedPtr<AddressSpace>> try_create();
|
static Result<OwnedPtr<AddressSpace>> try_create();
|
||||||
|
|
||||||
|
void debug_log();
|
||||||
|
|
||||||
Result<OwnedPtr<AddressSpace>> clone();
|
Result<OwnedPtr<AddressSpace>> clone();
|
||||||
|
|
||||||
PageDirectory* page_directory() const
|
PageDirectory* page_directory() const
|
||||||
|
Loading…
Reference in New Issue
Block a user