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

📄 memory.h

📁 一个用于学习的操作系统
💻 H
字号:
/*文件名: memory.h  说明:   页级内存管理函数  作者:   marsinfan  日期:   2005/12/20*/#ifndef _memory_h_#define _memory_h_#include <fairysky/types.h>#define PAGE_SIZE 4096#define _1M_SIZE 0X00100000#define PAGE_DIR 0xC0010000     //进程0的页目录地址#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);#define MAX_MEM 16typedef struct mem_info {    u8 used;} MEM_INFO;extern MEM_INFO *mem_map;//用刷新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 + -