日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux内核定义,Linux内核定义的常量

發(fā)布時間:2024/9/18 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux内核定义,Linux内核定义的常量 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1 初始定義

定義了你的機器上的地址轉(zhuǎn)換__virt_to_phys()。這個宏用于把虛擬地址轉(zhuǎn)換為一個物理地址。通常情況下:

phys = virt - PAGE_OFFSET + PHYS_OFFSET

2 解壓縮符號

l???????? ZTEXTADDR

解壓縮器的地址地址。由于當(dāng)你調(diào)用解壓縮器代碼時,通常關(guān)閉MMU,因此這里并不討論虛擬地址和物理地址的問題。通常你在這個地址處調(diào)用內(nèi)核,開始引導(dǎo)內(nèi)核。它不需要在RAM中,只需要位于FLASH或其他只讀或讀/寫的可尋址的存儲設(shè)備中。

l???????? ZBSSADDR

解壓縮器的初始化為0的工作區(qū)的起始地址。必須位于RAM中,解壓縮器會替你把它初始化為0,此外,需要關(guān)閉MMU。

l???????? ZRELADDR

解壓縮內(nèi)核將被寫入的地址和最終的執(zhí)行地址。必須滿足:

__virt_to_phys(TEXTADDR) == ZRELADDR

內(nèi)核的開始部分被編碼為與位置無關(guān)的代碼。

l???????? INITRD_PHYS

放置初始RAM盤的物理地址。僅當(dāng)你使用bootpImage時相關(guān)(這是一種非常老的param_struct結(jié)構(gòu))

l???????? INITRD_VIRT

初始RAM盤的虛擬地址。必須滿足:

__virt_to_phys(INITRD_VIRT) == INITRD_PHYS

l???????? PARAMS_PHYS

param_struct 結(jié)構(gòu)體或tag lis的物理地址,用于給定內(nèi)核執(zhí)行環(huán)境下的不同參數(shù)。

3 內(nèi)核符號

l???????? PHYS_OFFSET

RAM第一個BANK的物理地址地址。

l???????? PAGE_OFFSET

RAM第一個BANK的虛擬地址地址。在內(nèi)核引導(dǎo)階段,虛擬地址PAGE_OFFSE將被映射為物理地址PHYS_OFFSET,它應(yīng)該與TASK_SIZE具有相同的值。

l???????? TASK_SIZE

一個用戶進程的最大值,單位為byte。用戶空間的堆棧從這個地址處向下增長。

任何一個低于TASK_SIZE的虛擬地址對用戶進程來說都是不可見的,因此,內(nèi)核通過進程偏移對每個進行進行動態(tài)的管理。我把這叫做用戶段。任何高于TASK_SIZE的對所有進程都是相同的,稱之為內(nèi)核段。(換句話說,你不能把IO映射放在低于TASK_SIZE和PAGE_OFFSET的位置處。)

l???????? TEXTADDR

內(nèi)核的虛擬起始地址,通常為PAGE_OFFSET + 0x8000。內(nèi)核映射必須在此結(jié)束。

l???????? DATAADDR

內(nèi)核數(shù)據(jù)段的虛擬地址,不能在使用解壓縮器的情況下定義。

l???????? VMALLOC_START

l???????? VMALLOC_END

用于限制vmalloc( )區(qū)域的虛擬地址。此地址必須位于內(nèi)核段。 通常,vmalloc( )區(qū)域在最后的虛擬RAM地址以上開始VMALLOC_OFFSET字節(jié)。

l???????? VMALLOC_OFFSET

Offset normally incorporated into VMALLOC_START to provide a hole between virtual RAM and the vmalloc area. We do this to allow out of bounds memory accesses (eg, something writing off the end of the mapped memory map) to be caught. Normally set to 8MB.

4 構(gòu)架相關(guān)的宏

l???????? BOOT_MEM(pram,pio,vio)

pram——指定了RAM起始的物理地址,必須始終存在,并應(yīng)等于PHYS_OFFSET。

pio——是供arch/arm/kernel/debug-armv.S中的調(diào)試宏使用的,包含IO的8 MB區(qū)域的物理地址。

vio——是8MB調(diào)試區(qū)域的虛擬地址。

這個調(diào)試區(qū)域?qū)⒈晃挥诖a中(通過MAPIO函數(shù))的隨后的構(gòu)架相關(guān)代碼再次進行初始化。

l???????? BOOT_PARAMS

參見 PARAMS_PHYS.

l???????? FIXUP(func)

機器相關(guān)的修正,在存儲子系統(tǒng)被初始化前運行。

l???????? MAPIO(func)

機器相關(guān)的函數(shù),用于IO區(qū)域的映射(包括上面的調(diào)試區(qū))。

l???????? INITIRQ(func)

用于初始化中斷的機器相關(guān)的函數(shù)。.

總結(jié)

以上是生活随笔為你收集整理的linux内核定义,Linux内核定义的常量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。