00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __PROC_H
00019 #define __PROC_H
00020
00021 #include "common/ktypes.h"
00022 #include "common/kconst.h"
00023
00024
00025
00026 typedef struct
00027 {
00028 boolean avl;
00029 DW ppid;
00030
00031 DW pre_task_link;
00032
00033 DD esp0;
00034 DW ss0;
00035
00036 DD esp1;
00037 DW ss1;
00038
00039 DD esp2;
00040 DW ss2;
00041
00042 DD cr3;
00043 DD eip;
00044 DD eflags;
00045 DD eax;
00046 DD ecx;
00047 DD edx;
00048 DD ebx;
00049 DD esp;
00050 DD ebp;
00051 DD esi;
00052 DD edi;
00053 DW es;
00054
00055 DW cs;
00056
00057 DW ss;
00058
00059 DW ds;
00060
00061 DW fs;
00062
00063 DW gs;
00064
00065 DW ldt_sel;
00066
00067 DW flags;
00068 DW io_map;
00069
00070 DW msg_q_delim;
00071
00072 DD recv_addr;
00073 DD wait_int_num;
00074 DD time_out;
00075
00076 } PROC;
00077
00078 extern LDT _ldt[MAX_PROC];
00079 extern SEG_DESC _ldte[MAX_PROC][3] __attribute__((aligned (8)));
00080
00081 extern PROC _proc[MAX_PROC];
00082
00083 void proc_init();
00084 SDB fork();
00085 void do_exit(DW pid);
00086 void forkNULL();
00087 SDB create(char *fname);
00088
00089 SDW load(char *fname,DW pid);
00090
00091
00092 void reti();
00093 void null_proc();
00094 void rogue();
00095
00096 #endif
00097