Moved PCB for each process to kernel heap

This commit is contained in:
2022-07-03 13:17:06 -05:00
parent e3026b2601
commit 5c7d002bbf
8 changed files with 144 additions and 104 deletions

View File

@@ -57,7 +57,7 @@ void kernel_initialize(struct boot_info_t *boot_info)
asm("hlt");*/
irq_enable();
load_context(next_process(NULL));
load_context(next_process());
}
int set_syscall(int id, int arg_count, int pid, void *func_ptr)
@@ -219,13 +219,8 @@ int add_process(void *program_entry, int priority, physaddr_t address_space)
return new_process->resource_id;
}
struct process_context_t *next_process(struct process_context_t *prev_state)
struct process_context_t *next_process()
{
if(prev_state != NULL)
{
kernel.active_process->state = prev_state;
queue_insert(&kernel.priority_queue, kernel.active_process, kernel.active_process->priority);
}
kernel.active_process = extract_min(&kernel.priority_queue);
if(kernel.active_process != NULL)
{
@@ -254,6 +249,19 @@ int terminate_process(size_t process_id)
return S_OK;
}
int store_active_context(struct process_context_t *context, size_t size)
{
if(kernel.active_process != NULL && kernel.active_process->state != NULL)
{
memcpy(kernel.active_process->state, context, size);
return S_OK;
}
else
{
return S_DOESNT_EXIST;
}
}
/*
int accept_message(size_t process_id, struct message_t *message)
{