内核中的符号
时间:2006-09-02 来源:jiok
内核中的符号
得到这个文档从http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2001-July/004064.html
初始定义
----------
下面的符号定义依赖于你对__virt_to_phys()在你机器上的转化,这个宏转化虚拟地址到物理地
址,这是简单的:phys = virt - PAGE_OFFSET + PHYS_OFFSET ZTEXTADDR 压缩文件的开始地址,这里没有必要来谈论虚拟和物理地址,因为在这里MMU会关闭
当你调用压缩代码.你从这个地址调用内核去启动.这不一定是在RAM中,也可以是FLASH、其它的 ZBSSADDR 压缩文件的0初始化区域开始地址,这个必须指向RAM,MMU是关闭的. ZRELADDR 这是压缩内核将被写甚至是执行的地址,下面的约束一定是有效的.
__virt_to_phys(TEXTADDR) == ZRELADDR
内核初始化部分的位置被小心的编码. INITRD_PHYS 初始化RAM的物理地址.仅仅与你使用的BOOTIMAGE去填充相关.(这只是工作在老的
param_struct上). INITRD_VIRT 初始化RAM的虚拟地址.下面的约束一定是有效的.
__virt_to_phys(INITRD_VIRT) == INITRD_PHYS PARAMS_PHYS param_struct or 标签列表的物理地址,得到内核的变量参数关于它的执行环境. KERNEL SYMBOLS//内核中的符号
--------------------
PHYS_OFFSET 第一个RAM块的开始地址. PAGE_OFFSET 第一个RAM块的开始的虚拟地址.当内核启动阶段,这个地址会被映象到 PHYS_OFFSET上,附上其它的你提供的映象.对于TASK_SIZE的值是相同的. TASK_SIZE 用户进程的最大的大小(字节).由于用户空间常常从0开始,用户进程的最空间
是能访问的地址+1.用的堆栈从这个地址向下长.
任何在TASK_SIZE下的虚拟地址都被认为是用户空间,因此动态的管理.我叫这
是用户段.
在TASK_SIZE上的是共用的对所有的进程,我叫这是内核段.
(换句话说,你不能把IO映象到TASK_SIZE以下,和PAGE_OFFSET之前). TEXTADDR 内核的开始的虚拟地址,一般为PAGE_OFFSET+0X8000.这是内核映象的结束点,
随着内核的发展,这里定位32768(字节)至128M的区域,以前的内核放置受到256M
的约束. DATAADDR 内核数据段的虚拟地址.当使用压缩内核是禁止定义. VMALLOC_START
VMALLOC_END 虚拟的vmalloc()地址的范围,禁止任何静态的映象到这个区域.vmalloc将覆盖它 们.这个地址也必须在内核段中. VMALLOC_OFFSET 一般设置为8M. Architecture Specific Macros//具体体系结构的宏.
----------------------------
BOOT_MEM(pram,pio,vio)
pram指定RAM开始地址(物理地址),必须描述,并且与PHYS_OFFSET相同.
pio是包含IO的8M区域的物理地址,arch/arm/kernel/debug-armv.S.
vio不一个8M DEBUG区域的虚拟地址.
debug区域将被重新寝初始化被随后的具体体系结构的代码.
BOOT_PARAMS
与PARAMS_PHYS一样. FIXUP(func)具体机器修正,在内存子系统初始化之前运行. INITIRQ(func) 初始化中断的具体机器函数.
得到这个文档从http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2001-July/004064.html
初始定义
----------
下面的符号定义依赖于你对__virt_to_phys()在你机器上的转化,这个宏转化虚拟地址到物理地
址,这是简单的:phys = virt - PAGE_OFFSET + PHYS_OFFSET ZTEXTADDR 压缩文件的开始地址,这里没有必要来谈论虚拟和物理地址,因为在这里MMU会关闭
当你调用压缩代码.你从这个地址调用内核去启动.这不一定是在RAM中,也可以是FLASH、其它的 ZBSSADDR 压缩文件的0初始化区域开始地址,这个必须指向RAM,MMU是关闭的. ZRELADDR 这是压缩内核将被写甚至是执行的地址,下面的约束一定是有效的.
__virt_to_phys(TEXTADDR) == ZRELADDR
内核初始化部分的位置被小心的编码. INITRD_PHYS 初始化RAM的物理地址.仅仅与你使用的BOOTIMAGE去填充相关.(这只是工作在老的
param_struct上). INITRD_VIRT 初始化RAM的虚拟地址.下面的约束一定是有效的.
__virt_to_phys(INITRD_VIRT) == INITRD_PHYS PARAMS_PHYS param_struct or 标签列表的物理地址,得到内核的变量参数关于它的执行环境. KERNEL SYMBOLS//内核中的符号
--------------------
PHYS_OFFSET 第一个RAM块的开始地址. PAGE_OFFSET 第一个RAM块的开始的虚拟地址.当内核启动阶段,这个地址会被映象到 PHYS_OFFSET上,附上其它的你提供的映象.对于TASK_SIZE的值是相同的. TASK_SIZE 用户进程的最大的大小(字节).由于用户空间常常从0开始,用户进程的最空间
是能访问的地址+1.用的堆栈从这个地址向下长.
任何在TASK_SIZE下的虚拟地址都被认为是用户空间,因此动态的管理.我叫这
是用户段.
在TASK_SIZE上的是共用的对所有的进程,我叫这是内核段.
(换句话说,你不能把IO映象到TASK_SIZE以下,和PAGE_OFFSET之前). TEXTADDR 内核的开始的虚拟地址,一般为PAGE_OFFSET+0X8000.这是内核映象的结束点,
随着内核的发展,这里定位32768(字节)至128M的区域,以前的内核放置受到256M
的约束. DATAADDR 内核数据段的虚拟地址.当使用压缩内核是禁止定义. VMALLOC_START
VMALLOC_END 虚拟的vmalloc()地址的范围,禁止任何静态的映象到这个区域.vmalloc将覆盖它 们.这个地址也必须在内核段中. VMALLOC_OFFSET 一般设置为8M. Architecture Specific Macros//具体体系结构的宏.
----------------------------
BOOT_MEM(pram,pio,vio)
pram指定RAM开始地址(物理地址),必须描述,并且与PHYS_OFFSET相同.
pio是包含IO的8M区域的物理地址,arch/arm/kernel/debug-armv.S.
vio不一个8M DEBUG区域的虚拟地址.
debug区域将被重新寝初始化被随后的具体体系结构的代码.
BOOT_PARAMS
与PARAMS_PHYS一样. FIXUP(func)具体机器修正,在内存子系统初始化之前运行. INITIRQ(func) 初始化中断的具体机器函数.
相关阅读 更多 +