PAGE_OFFSET
首先看看PAGE_OFFSET的功能
- 内存映射
- | 用户空间 | 内核空间 |
- |——————+——————+——————+———————|
- 物理 A:0 1G B:3G C:4G
- B: 定义为 PAGE_OFFSET
- 0-1G: 和内核空间又有丰富的内容,我还没有整理,以后再说。
-------------------------------------
- arch/x86/include/asm/page_types.h
- #define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET
- -> __PAGE_OFFSET
- arch/x86/include/asm/page_64_types.h:
- #define __PAGE_OFFSET _AC(0xffff880000000000, UL)
- arch/x86/include/asm/page_32_types.h:
- #define __PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL)
- -->CONFIG_PAGE_OFFSET
- arch/x86/configs/i386_defconfig:
- CONFIG_PAGE_OFFSET=0xC0000000
- -->AC
- include/linux/const.h
- #ifdef __ASSEMBLY__
- #define _AC(X,Y) X
- #else
- #define __AC(X,Y) (X##Y)
- #define _AC(X,Y) __AC(X,Y)
- #endif
=====================================
我们就很清晰的看到,在x86下,32时PAGE_OFFSET 为0xC0000000(3G),也是内核空间和用户空间的分界。
时间: 2024-10-18 12:15:45