📄 arch.h
字号:
#ifndef OS_KERNEL_ARCH
#define OS_KERNEL_ARCH
#define READ_ONLY (0x05)
#define READ_WRITE (0x07)
#define NO_ACCESS_RIGHT (0x00)
extern int page_dir[1024],page_0[1024];
extern int reload_cr3_flag;
extern int page_dir[1024];
struct system_page_table {
int add[1024];
};
extern struct system_page_table system_page_table[256];
struct file_page_table{
int number;
int page_table_block[128];
int item_number[128];
int reference_number[128];
};
extern struct file_page_table file_page_table[FILE_NUMBER];
#define DEFAULT_CS (0x23)
#define DEFAULT_DS (0x2b)
#define DEFAULT_ES DEFAULT_DS
#define DEFAULT_FS DEFAULT_DS
#define DEFAULT_GS DEFAULT_DS
#define DEFAULT_SS DEFAULT_DS
#define DEFAULT_SP (0xc0000ffc)
#define DEFAULT_SP_0 (0xc0000800)
#define CR2_BUF_NUMBER 6
typedef struct{
void (*ip)(void );
int cs;
int flag;
char *sp;
int ss;
int ds,es,fs,gs;
char *sp_0;
int (*function)(void );
int cr2[CR2_BUF_NUMBER];
}run_point;
#define RESET_RUN_POINT(r_p) \
{ \
extern void start_os(void ); \
int cr2_i; \
(r_p).cs=DEFAULT_CS; \
(r_p).ip=start_os; \
(r_p).flag=0x200; \
(r_p).ss=DEFAULT_SS; \
(r_p).sp=(char *)(DEFAULT_SP); \
(r_p).ds=(DEFAULT_DS); \
(r_p).es=(DEFAULT_ES); \
(r_p).fs=(DEFAULT_FS); \
(r_p).gs=(DEFAULT_GS); \
(r_p).sp_0=(char *)(DEFAULT_SP_0); \
for(cr2_i=0;cr2_i<CR2_BUF_NUMBER;cr2_i++)\
(r_p).cr2[cr2_i]=(-1); \
}
#define COPY_RUN_POINT(s,d) \
{ int cr2_i; \
(d).cs=(s).cs;(d).ip=(s).ip; \
(d).ss=(s).ss;(d).sp=(s).sp; \
(d).flag=(s).flag; \
\
(d).ds=(s).ds; \
(d).es=(s).es; \
(d).fs=(s).fs; \
(d).gs=(s).gs; \
\
(d).sp_0=(s).sp_0; \
\
for(cr2_i=0;cr2_i<CR2_BUF_NUMBER;cr2_i++)\
(d).cr2[cr2_i]=(s).cr2[cr2_i]; \
}
extern char *kernel_get_thread_parameter(int thread_id);
extern int *add_tlb_buf(int dir,int system_file,int file_dir,int right);
extern void init_tlb(void );
extern char *get_block_base(int memory_body_id,int block_id);
extern int get_memory_amount(int memory_body_id);
#define PAGE_SIZE (0x1000)
struct thread_physical_block ;
extern void notify_physical_block_switch(int thread_id,
struct thread_physical_block *pb);
extern void notify_switch(int thread_id);
extern void do_idle(void );
extern int lock_os_kernel(void );
extern void unlock_os_kernel(void );
extern int get_virtual_cpu(void );
extern int switch_virtual_cpu(void );
extern int disable_interruption();
extern void restore_interruption(int eflag);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -