2025-03-06 21:50:29 +02:00
|
|
|
#ifndef KERNEL_HEADER
|
|
|
|
#define KERNEL_HEADER
|
|
|
|
|
|
|
|
#include "process.h"
|
|
|
|
|
|
|
|
struct RunQ {
|
|
|
|
struct Process *current_proc;
|
|
|
|
size_t max_procs;
|
|
|
|
size_t proc_amount;
|
|
|
|
size_t next_proc_id;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct RunQ *RunQ(size_t max_procs);
|
2025-03-07 22:52:43 +02:00
|
|
|
void RUNQ_add_process(size_t max_page_accesses, size_t total_pages_owned, size_t ws_size);
|
2025-03-07 18:49:49 +02:00
|
|
|
void RUNQ_remove_current_process(void);
|
2025-03-06 21:50:29 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct PhysPage {
|
|
|
|
size_t ppn;
|
|
|
|
size_t busy_flag;
|
2025-03-07 15:44:45 +02:00
|
|
|
size_t last_accessed;
|
2025-03-06 21:50:29 +02:00
|
|
|
struct PhysPage *prev;
|
|
|
|
struct PhysPage *next;
|
2025-03-06 23:05:21 +02:00
|
|
|
struct PageTableEntry *pt;
|
2025-03-06 21:50:29 +02:00
|
|
|
size_t pt_index;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
void KERNEL_page_fault(struct PageTableEntry *pt, size_t page_no);
|
2025-03-07 15:44:45 +02:00
|
|
|
void KERNEL_update_job(size_t page_amount);
|
2025-03-07 18:49:49 +02:00
|
|
|
void KERNEL_sanity_check_memory_lists(void);
|
2025-03-07 15:44:45 +02:00
|
|
|
|
2025-03-06 21:50:29 +02:00
|
|
|
#endif
|