/* By Marcus Xing include/proto.h 原型集合 */ /* forward include: type.h console.h tty.h protect.h proc.h */ #ifndef _PROTO_H_ #define _PROTO_H_ /* 打印一个字符串 */ void Disp_Str(u8 *psz_Str); /* 打印一个带颜色的字符串 */ void Disp_Color_Str(u8 *psz_Str,u8 color); /* 此函数以16进制打印一个32位的整数, 不考虑无符号,前面的0不打印 */ void Disp_Int(int num); /* 写一个值到端口中 */ void Out_Byte(u16 port,u8 value); /* 从端口读一个值并返回 */ u8 In_Byte(u16 port); /* 此函数用于填充GDT或IDT中的描述符 */ void Fill_Desc(u8 desc_no,u32 base,u32 limit,u16 attr); /* 此函数用于填充一个IDT中的门描述符 */ void Fill_Gate(u8 idt_no,Int_Handler handler,u8 type,u8 privilege); /* 粗糙的延迟函数 */ void Delay(u32 time); /* 按字节复制函数 */ void Memory_Copy(void *dest,void *src,int len); /* 进程A的执行体 */ void Proc_A(); /* 进程B的执行体 */ void Proc_B(); /* 进程C的执行体 */ void Proc_C(); /* 激活vec_no号中断 */ void Enable_IRQ(int vec_no); /* 屏蔽vec_no号中断 */ void Disable_IRQ(int vec_no); /* 时钟中断的处理函数 */ void Clock_Handler(int vec_no); /* 其他没特点的外中断处理函数 */ void Hard_Int_Handler(int hw_vec_no); /* 精确到10ms的延迟函数,形参的单位是毫秒 */ void Milli_Delay(int delay_time_by_milli); /* 进程调度 */ void Schedule(); /* 简单的开中断 */ void Enable_Int(); /* 简单的关中断 */ void Disable_Int(); /* 终端进程的执行体 */ void Proc_TTY(); /* 模仿printf */ int Printf(const char *fmt,...); /* 字符串拷贝 */ void Str_Cpy(char *dest,const char *src); /* 求字符串长度 */ int Str_Len(const char *sz_str); /* 以下与TTY和控制台有关 */ /* 初始化所有的TTY */ void Init_All_TTY(); /* 读键盘函数 */ void Keyboard_Read(TTY *tty); /* 处理键盘输入的函数 */ void In_Process(TTY *tty,u32 key); /* 根据前景色和背景色产生一个颜色值供Disp_Color_Str使用 */ u8 Make_Color(u8 forward_color,u8 back_color); /* 判断是否是当前控制台 */ int Is_Current_Console(Console *console); /* console.c中定义,显示字符 */ void Out_Char(Console *console,char c); /* 选择控置台 */ void Select_Console(int console_no); /* 控制台滚动 */ void Scroll_Screen(Console *con,int direction); /* 以下是系统调用相关 */ /* 系统调用接口 */ int Get_Ticks(); int System_Call_Get_Ticks(); void Write(const char *buf,int len); int System_Call_Write(const char *buf,int len,PCB *pcb); /* 回到实模式 */ void Prepare_To_Real_Mode(); /* 重启函数的接口 */ void Reset(); /* 所有系统调用统一入口 */ void System_Call(); #endif