// proc.h // Author: Josh Holtrop // Date; 08/18/05 // Modified: 08/18/05 #ifndef __HOS_PROC_H__ #define __HOS_PROC_H__ __HOS_PROC_H__ #include "hos_defines.h" #include "kernel.h" typedef struct { u32_t *page_dir; /* Page directory with physical PT addys */ u32_t *v_page_dir; /* Virtual page table addresses for init */ u32_t p_page_dir; /* Physical address of page directory */ u32_t size; /* Process size, bytes from 0 through bss */ u32_t esp; /* Process stack pointer */ int_stack_frame_t stack_frame; } process_t; int proc_init(int_stack_t *stack_frame); void proc_sched(); u32_t create_task(void *base, u32_t image_size, u32_t bss_size, void *entry); process_t *create_process(void *base, u32_t image_size, u32_t bss_size, void *entry); void create_address_space(process_t *p); void create_process_stack(process_t *p); void copy_into_address_space(u32_t dest_addr, void *src_addr, u32_t pages, process_t *p); void zero_address_space(u32_t dest_addr, u32_t pages, process_t *p); u32_t fork(process_t *p); #endif