hos/kernel/proc/proc.h

38 lines
1.0 KiB
C

// 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