Setup kernel stack; but process is failing

This commit is contained in:
2026-02-17 23:01:32 +01:00
parent 458ba375f3
commit ac7216d84a
15 changed files with 136 additions and 21 deletions

View File

@@ -6,6 +6,8 @@
#include "kernel.h"
#include "process.h"
#include "mem/paging/paging.h"
#include <stdint.h>
extern struct process_t* processes_list;
extern struct process_t* current_process;
@@ -18,7 +20,7 @@ void scheduler_init()
struct cpu_status_t* scheduler_schedule(struct cpu_status_t* context)
{
current_process->context = context;
//current_process->context = context;
current_process->status = READY;
for (;;) {
@@ -41,6 +43,13 @@ struct cpu_status_t* scheduler_schedule(struct cpu_status_t* context)
}
}
DEBUG("current_process={pid=%u name='%s'}", current_process->pid, current_process->name);
// Current_process gets wrong context?? (iret_rip points to other stuff than process function; like putpixel() for example)
DEBUG("current_process={pid=%u, name='%s', root_page_table[virt]=%p}", current_process->pid, current_process->name, current_process->root_page_table);
load_cr3(VIRT_TO_PHYS((uint64_t)current_process->root_page_table));
DEBUG("loaded process pml4 into cr3");
/* process_switch(current_process->context->rbp, current_process->context->iret_rip);
DEBUG("switched to process rip!"); */
return current_process->context;
}