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

📄 memory.h

📁 fairysky系统,是一个小型的内核,模拟linux原始版本的
💻 H
字号:
/*文件名: memory.h  说明:   页级内存管理函数  作者:   marsinfan  日期:   2005/12/20*/#ifndef _memory_h_#define _memory_h_#include <fairysky/types.h>#define PAGE_SIZE 4096#define PAGE_PRESENT	0x001#define PAGE_RW		0x002#define PAGE_USER	0x004#define PAGE_PWT	0x008	/* 486 only - not used currently */#define PAGE_PCD	0x010	/* 486 only - not used currently */#define PAGE_ACCESSED	0x020#define PAGE_DIRTY	0x040#define PAGE_COW	0x200	/* implemented in software (one of the AVL bits) */#define PAGE_PRIVATE	(PAGE_PRESENT | PAGE_RW | PAGE_USER | PAGE_ACCESSED | PAGE_COW)#define PAGE_SHARED	(PAGE_PRESENT | PAGE_RW | PAGE_USER | PAGE_ACCESSED)#define PAGE_COPY	(PAGE_PRESENT | PAGE_USER | PAGE_ACCESSED | PAGE_COW)#define PAGE_READONLY	(PAGE_PRESENT | PAGE_USER | PAGE_ACCESSED)#define PAGE_TABLE	(PAGE_PRESENT | PAGE_RW | PAGE_USER | PAGE_ACCESSED)extern s32 put_page(addr_t addr);extern s32 copy_page_table(u32 to, u32 from);extern void do_wp_page(u32 addr);extern void do_no_page(u32 addr);extern int get_free_page();extern int free_page(u32 addr);//用刷新cr3的方法来刷新TLB    #define __flush_tlb()							\    do {                                \        unsigned int tmpreg;                    \        __asm__ __volatile__(                    \        "movl %%cr3, %0;              \n"        \        "movl %0, %%cr3;  # flush TLB \n"        \        : "=r" (tmpreg)                    \        :: "memory");                    \        } while (0)#endif

⌨️ 快捷键说明

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