38 lines
1.0 KiB
C
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
|
|
|