⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kernel.h

📁 fairysky系统,是一个小型的内核,模拟linux原始版本的
💻 H
字号:
/*文件名: kernel.h  说明:     作者:   marsinfan  日期:   2005/12/07*/#ifndef _LINUX_KERNEL_H#define _LINUX_KERNEL_H#include <fairysky/types.h>typedef struct {    s32 hd_cyl;         //柱面数    s32  hd_head;        //磁头数    s32 hd_wpcom;       //写前预补偿柱面号    s32  hd_ctl;         //控制字节    s32 hd_lzone;       //磁头着陆区柱面号    s32  hd_sect;        //每磁道扇区数} HD_INFO;typedef struct params {        u8 cusor_x;         //光标位置    u8 cusor_y;         //光标位置    u8 mem_size;        //物理内存大小,已转化为M    u8 nouse1;             u8 display_page;    //当前显示页面    u8 nouse2;        u8 video_mode;      //显示模式    u8 window_width;    //字符列数    s16 nouse3;        u8 vidio_mem_size;  //显示内存      u8 display_stat;    //显示状态    s16 vidio_param;    //显卡特性参数         u8 BIOS[32];        //硬盘参数表     s16 DEV_ROOT;       //根文件系统设备号}__attribute__((packed)) PARAMS;extern PARAMS *pparams;/* * 'kernel.h' contains some often-used function prototypes etc */#define PAGE_OFFSET  0xC0000000   //进行分页后,内核所在的虚拟地址//虚拟地址转化为物理地址#define vaddr_to_paddr(vaddr) \    ((addr_t)(vaddr) - PAGE_OFFSET)//物理地址转化为虚拟地址#define paddr_to_vaddr(paddr) \    ((addr_t)((paddr) + PAGE_OFFSET))//物理地址转化为页面索引#define paddr_to_index(paddr) \    ((paddr) >> 12)//页面索引转化为物理地址#define index_to_paddr(index) \    ((index) << 12)//页面索引转化为虚拟地址    #define index_to_vaddr(index)  \    (paddr_to_vaddr(index_to_paddr(index)))    //虚拟地址转化为页面索引#define vaddr_to_index(vaddr)  \    (paddr_to_index(vaddr_to_paddr(vaddr)))void verify_area(void * addr, size_t size);//volatile void panic(const char * str);//volatile void do_exit(long error_code);int printk(const char *fmt, ...);//void * malloc(unsigned int size);//void free_s(void * obj, int size);//#define free(x) free_s((x), 0)/* * This is defined as a macro, but at some point this might become a * real subroutine that sets a flag if it returns true (to do * BSD-style accounting where the process is flagged if it uses root * privs).  The implication of this is that you should do normal * permissions checks first, and check suser() last. *///#define suser() (current->euid == 0)#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -