NKStartup的参数KData
来源:互联网 发布:网络推广赚什么 编辑:程序博客网 时间:2024/06/05 11:29
NKStartup的参数KData是什么?,其实就是一个数据结构, 它位于nkldr的data区。如下:
AREA |.KDATA|,DATA,NOINIT
KDataArea
PTs % 0x4000 ; space for first-level page table
ExceptionVectors
% 0x0400 ; space for exception vectors
% 0x0400 ; space for interrupt stack
% 0x0100 ; space for FIQ stack
% 0x0700 ; space for Abort stack
KPage % 0x0c00 ; space for kernel stack & KDataStruct
HighPT % 0x0400 ; 2nd level page table to map 0xFFF00000
KDEnd % 0
撇开实现, 单纯去理解的话, 和传递一个结构体指针没有什么区别。 再问: 这个数据结构干嘛的,代表什么? 这得明白高地址分配。
[高地址分配]
^ 0xFFFD0000
FirstPT # 0x4000
# 0x4000
# 0x8000
# 0x10000 ; not mapped
ExVector # 0x0400 ; vectors and table
# 0x0400 ; 1K interrupt stack (ffff0400)
IntStack # 0x0100 ; 256 byte FIQ stack (ffff0800)
FIQStack # 0x0700 ; 2K-256 abort stack (ffff0900)
AbortStack #0xC000-0x1000;not mapped (ffff1000)
KDBase # 0x07E0 ; 2K-32 kernel stack
KStack # 0x0020 ; temporary register save area
KData # 0x400 ; kernel data area
FirstPT就是之前说的一级页表所在。大小16kbytes。 后面保留了2块区域,也许是提供给2级页表使用。 ExVector是异常入口, Arm有个机制, 通过设定p15, 可以将异常入口从0x18改成高地址FFFF0000. IntStack, FIQStack, AbortStack, KStack分别是各个模式以及内核的堆栈。 KData就是内核参数区了。
typedef struct ARM_HIGH {
ulong firstPT[4096]; // 0xFFFD0000: 1st level page table
char reserved2[0x20000-0x4000];
char exVectors[0x400]; // 0xFFFF0000: exception vectors
char reserved3[0x2400-0x400];
char intrStack[0x400]; // 0xFFFF2400: interrupt stack
char reserved4[0x4900-0x2800];
char abortStack[0x700]; // 0xFFFF4900: abort stack
char reserved5[0x6800-0x5000];
char fiqStack[0x100]; // 0xFFFF6800: FIQ stack
char reserved6[0xC000-0x6900];
char kStack[0x800]; // 0xFFFFC000: kernel stack
struct KDataStruct kdata; // 0xFFFFC800: kernel data page
} ARM_HIGH;
- NKStartup的参数KData
- 表达式参数的模板参数
- 函数的默认参数的大坑,参数的可变参数
- python05-函数的位置参数、默认参数、可变参数、键值对参数(关键字参数)
- python函数的参数(默认参数、可变参数、关键字参数和参数组合)
- Python中位置参数、默认参数、可变参数、命名关键字参数、关键字参数的区别
- python 函数的四种参数---必选参数、默认参数、可变参数和关键字参数
- 晶体管的h参数、y参数和S参数
- C#中值参数、引用参数、输出参数的区别
- 函数参数 - 内部参数和外部参数的概念
- C#的值参数 输出参数 引用参数
- c# ref参数的用法 out参数
- 参数处理-Shell传入参数的处理
- *参数做形参和*&参数做形参的区别.
- out参数和ref参数的区别
- C#的引用参数和值参数
- 表单参数与URL参数的优先级
- 数组参数和指针参数的分析
- 不知道什么时候,才懂得更爱~!
- Dancing Links 在搜索中的应用
- 细谈select函数(C语言)
- 程序员每天该做的事
- 《盗梦空间》与程序中的递归
- NKStartup的参数KData
- RHEL/CentOS 5.x系统服务优化详解
- java反编译工具---jd-gui.exe
- 比尔·盖茨(Bill Gates)
- linux -- 如何查看服务器所使用的linux版本
- Oracle数据库自动被锁定的解决方法a
- javascript获取Dom节点元素
- android机身存储读写权限问题
- ubuntu 使用Broadcom BCM43xx 无线网卡