在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文詳解Linux內(nèi)核源碼組織結(jié)構(gòu)

書(shū)生途 ? 來(lái)源:書(shū)生途 ? 作者:書(shū)生途 ? 2022-05-10 19:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概要:本文內(nèi)容包含Linux源碼樹(shù)結(jié)構(gòu)分析Linux Makefile分析Kconfig文件分析Linux內(nèi)核配置選項(xiàng)分析。這些知識(shí)是為了理解內(nèi)核文件的組織形式,為具體移植內(nèi)核做知識(shí)準(zhǔn)備。

一, Linux源碼樹(shù)結(jié)構(gòu)分析

對(duì)Linux源碼樹(shù)下個(gè)子目錄內(nèi)包含的內(nèi)容進(jìn)行列表羅列:

  1. arch:體系結(jié)構(gòu)相關(guān)的代碼,每一個(gè)子目錄代表一種架構(gòu)
  2. block:塊設(shè)備的通用函數(shù)
  3. crypot:常用加密和散列算法、壓縮和CRC校核算法
  4. fs:Linux支持的文件系統(tǒng),每一個(gè)子目錄代表一種文件系統(tǒng)
  5. include:內(nèi)核頭文件:基本頭文件(include/linux )、驅(qū)動(dòng)或功能部件頭文件(例:include/mtd )、體系相關(guān)頭文件(linux/asm-arm )
  6. driver:所有的驅(qū)動(dòng)程序,每一個(gè)子目錄代表一類驅(qū)動(dòng)程序
  7. init:內(nèi)核的初始化程序,其中main.c中的start_kernel函數(shù)是內(nèi)核引導(dǎo)后執(zhí)行的第一個(gè)函數(shù)
  8. ipc:進(jìn)程間通信代碼
  9. kernel:內(nèi)核管理的核心代碼,與體系相關(guān)的代碼在/arch/$(ARCH)/kernel
  10. lib:內(nèi)核用到的庫(kù)函數(shù),與處理器相關(guān)的庫(kù)函數(shù)位于/arch/$(ARCH)/lib
  11. mm:內(nèi)存管理代碼,與處理器體系相關(guān)的位于/arch/$(ARCH)/mm
  12. net:與網(wǎng)絡(luò)相關(guān)的代碼,每一個(gè)子目錄對(duì)應(yīng)于網(wǎng)絡(luò)的一個(gè)方面
  13. security:安全、密鑰相關(guān)的代碼
  14. sound:音頻相關(guān)的驅(qū)動(dòng)程序
  15. usr:用來(lái)制作一個(gè)壓縮的cpio歸檔文件:initrd的鏡像,它可以作為內(nèi)核啟動(dòng)后掛載的第一個(gè)文件系統(tǒng)
  16. script:用于配置、編譯內(nèi)核的腳本文件
  17. Documet:內(nèi)核文檔

二,Linux Makefile分析

主要從三個(gè)方面講解:編譯哪些文件如何編譯文件如何連接文件

(1)Linux Makefile的分類

  1. 頂層Makefile:總體上控制著內(nèi)核的編譯
  2. arch/$(ARCH)/Makefile:決定哪些和體系相關(guān)的代碼參加編譯
  3. .config:配置文件,內(nèi)核配置時(shí)產(chǎn)生,所有的Makefile都根據(jù)這個(gè)文件編譯內(nèi)核(包括頂層的和各分成的Makefile)
  4. scripts/Makefile.*:Makefile公用的通用規(guī)則、腳本等
  5. */Makefile:負(fù)責(zé)該目錄下文件的編譯

(2)編譯哪些文件

頂層Makefile決定哪些目錄中的文件將編譯進(jìn)內(nèi)核

 init-y      := init/
    drivers-y   := drivers/ sound/ firmware/
    net-y       := net/
    libs-y      := lib/
    core-y      := usr/
    ...
    core-y      += kernel/ mm/ fs/ ipc/ security/ crypto/ block/

頂層Makefile將13個(gè)子目錄分成5個(gè)部分:init-y、drivers-y、net-y、libs-y、core-y

頂層通過(guò)下列語(yǔ)句包含和體系架構(gòu)有關(guān)的Makefile。仔細(xì)觀察可以看到/arch子目錄的根目錄下是沒(méi)有Makefile文件的,而其它各子目錄都是有Makefile。

    include $(srctree)/arch/$(SRCARCH)/Makefile
    ...
    SRCARCH     := $(ARCH)

所以在編譯內(nèi)核之前先要確定ARCH

    ARCH        ?= $(SUBARCH)
    CROSS_COMPILE   ?=
    ...
    SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
                  -e s/arm.*/arm/ -e s/sa110/arm/ \
                  -e s/s390x/s390/ -e s/parisc64/parisc/ \
                  -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
                  -e s/sh[234].*/sh/ )

默認(rèn)的ARCH不是我們需要的,所以要進(jìn)行修改

    ARCH        ?= arm
    CROSS_COMPILE   ?=arm-linux-

$$(srctree)/arch/$(SRCARCH)/Makefile對(duì)內(nèi)核的內(nèi)容進(jìn)行了擴(kuò)充

core-y              += arch/arm/kernel/ arch/arm/mm/ arch/arm/common/
core-y              += $(machdirs) $(platdirs)
core-$(CONFIG_FPE_NWFPE)   += arch/arm/nwfpe/
core-$(CONFIG_FPE_FASTFPE)	+= $(FASTFPE_OBJ)
core-$(CONFIG_VFP)     += arch/arm/vfp/
drivers-$(CONFIG_OPROFILE)      += arch/arm/oprofile/
libs-y              := arch/arm/lib/ $(libs-y)
...
head-y      := arch/arm/kernel/head$(MMUEXT).o arch/arm/kernel/init_task.o

可以看到一個(gè)新元素head-y,它還有一個(gè)特殊的地方,它是直接對(duì)應(yīng)著兩個(gè)文件,而不是目錄。之所以分成兩個(gè)是為了同時(shí)支持有無(wú)MMU的CPU,它們對(duì)應(yīng)著兩個(gè)不同的head$(MMUEXT).o 文件,由變量MMUEXT控制,可以在配置時(shí)設(shè)定。

至此我們知道了編譯時(shí)將進(jìn)入哪些文件進(jìn)行編譯。編譯時(shí)依次進(jìn)入init-y、core-y、libs-y、drivers-y、net-y中列的目錄調(diào)用其中的Makefile進(jìn)行編譯,每一個(gè)子目錄都會(huì)生成build-in.o(libs-y所列的目錄下有可能生成lib.a)。最后head-y列出的文件和build-in.o、lib.a一起連接成vmlinux。

在配置內(nèi)核時(shí),將會(huì)產(chǎn)生.config文件,Makefile將會(huì)在.config文件中添加下面兩行。

CONFIG_KERNELVERSION = "2.6.32.2"
CONFIG_ARCH = "arm"

有可能是版本原因,在2.6.32.2版本中并沒(méi)有上面兩個(gè)語(yǔ)句,有下面兩句。

#Linux kernel version = 2.6.32.2
CONFIG_ARM = y

觀察.config文件會(huì)發(fā)現(xiàn)變量的值主要有兩種y、m,各級(jí)的Makefile將會(huì)根據(jù)這些變量的值來(lái)決定編譯哪些文件,同時(shí)是編譯進(jìn)內(nèi)核,還是作為內(nèi)核模塊存在。

obj-y中定義的.o文件將由當(dāng)前目錄下的.c、.S文件及子目錄下的build-in.o文件編譯連接得到的。

注意:obj-y中定義的.o文件的順序是由意義的。

下面是一段取自子目錄中的Makefile文件內(nèi)容,在該目錄下有ioat和ipu子目錄

    obj-$(CONFIG_DMA_ENGINE) += dmaengine.o
    obj-$(CONFIG_NET_DMA) += iovlock.o
    obj-$(CONFIG_DMATEST) += dmatest.o
    obj-$(CONFIG_INTEL_IOATDMA) += ioat/
    obj-$(CONFIG_INTEL_IOP_ADMA) += iop-adma.o
    obj-$(CONFIG_FSL_DMA) += fsldma.o
    obj-$(CONFIG_MV_XOR) += mv_xor.o
    obj-$(CONFIG_DW_DMAC) += dw_dmac.o
    obj-$(CONFIG_AT_HDMAC) += at_hdmac.o
    obj-$(CONFIG_MX3_IPU) += ipu/
    obj-$(CONFIG_TXX9_DMAC) += txx9dmac.o
    obj-$(CONFIG_SH_DMAE) += shdma.o

obj-m中定義的.o文件是由的當(dāng)前目錄下的.c、.S文件編譯生成,它們不會(huì)與build-in.o一起編譯進(jìn)入內(nèi)核。而是被編譯成.ko文件,作為模塊存在。

當(dāng).o文件由單文件編譯而成時(shí),用下面的語(yǔ)句:

obj-$(CONFIG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o

當(dāng).o文件由多文件編譯而成時(shí),用下面的語(yǔ)句:

obj-$(CONFIG_ISDN) +=isdn.o
isdn-objs := isdn_net_lib.o isdn_v110.o isdn_commen.o

編寫(xiě)驅(qū)動(dòng)程序時(shí),也是以這種方式編寫(xiě)Makefile。

lib-y中定義的.o文件是由的當(dāng)前目錄下的.c、.S文件編譯生成,他們被打包成當(dāng)前目錄下的lib.a文件。同時(shí)出現(xiàn)在lib-y和obj-y中的文件,不會(huì)被包含進(jìn)lib.a文件。

obj-y和obj-m可以用來(lái)指定進(jìn)入下一級(jí)目錄。

(3)怎么編譯這些文件

怎么編譯文件就是意味著編譯選項(xiàng)和連接選項(xiàng)是什么。

這些選項(xiàng)分成3類:全局的(適用整個(gè)代碼樹(shù))、局部的(適用單個(gè)Makefile)、個(gè)體的(適用單個(gè)文件)。

全局選項(xiàng)是在頂層Makefile和arch/$(ARCH)/Makefile中定義的,這些選項(xiàng)是CFLAGS、AFLAGS、LDFLAGS、ARFLAGS,它們分別是編譯C文件的選項(xiàng),編譯匯編文件的選項(xiàng),連接文件的選項(xiàng),制作庫(kù)文件的選項(xiàng)。

局部選項(xiàng)在各自子目錄中定義,名稱為:EXTRA_CFLAGS、EXTRA_AFALGS、EXTRA_LDFALGS、EXTRA_ARFLAGS.

對(duì)單文件設(shè)定編譯選項(xiàng),可以用CLFAGS_$@、AFLAGS_$@,前者對(duì)C文件,后者對(duì)匯編文件。

注意:3類選項(xiàng)是一起使用的,在scripts/Makefile.lib中可以看到:

_c_flags = $(CFLAGS) $(EXTRA_CFLGAS) $(CFALGS_$(baseterget.o))

如何連接文件

在頂層Makefile文件中有如下語(yǔ)句:

init-y      := $(patsubst %/, %/built-in.o, $(init-y))
core-y      := $(patsubst %/, %/built-in.o, $(core-y))
drivers-y   := $(patsubst %/, %/built-in.o, $(drivers-y))
net-y       := $(patsubst %/, %/built-in.o, $(net-y))
libs-y1     := $(patsubst %/, %/lib.a, $(libs-y))
libs-y2     := $(patsubst %/, %/built-in.o, $(libs-y))
libs-y      := $(libs-y1) $(libs-y2)

可以看出以后的連接是相當(dāng)于著五種built-in.o文件和head-o文件的連接。

之后對(duì)這些文件再次進(jìn)行合并

vmlinux-init := $(head-y) $(init-y)
vmlinux-main := $(core-y) $(libs-y) $(drivers-y) $(net-y)
vmlinux-all  := $(vmlinux-init) $(vmlinux-main)
vmlinux-lds  := arch/$(SRCARCH)/kernel/vmlinux.lds

可以看出初始化代碼由兩部分組成head-y和init-y兩部分組成,而且head-y是在init-y的前面。所以總的代碼順序是arch/arm/kernel/head.o(假設(shè)有MMU,沒(méi)有的話是head_nommu.o)、arch/arm/kernel/init_task.o、init/build-in.o。

連接腳本是arch/$(SRCARCH)/kernel/vmlinux.lds,它由arch/$(SRCARCH)/kernel/vmlinux.lds.S生成。

具體連接細(xì)節(jié)可以查看上面的文件內(nèi)容。

三,內(nèi)核的Kconfig分析

內(nèi)核配置工具讀取各個(gè)Kconfig文件,生成配置界面共開(kāi)放人員配置內(nèi)核,最后生成配置文件.config。

關(guān)于Kconfig的最權(quán)威資料在/Documentations/Kbuild/kconfig-language.txt

Kconfig語(yǔ)法分析:

  • Kconfig的基本要素:config ;config經(jīng)常被其它條目包含,用來(lái)生成菜單和多項(xiàng)選擇。
config JFFS2_FS_WBUF_VERIFY
    bool "Verify JFFS2 write-buffer reads"
    depends on JFFS2_FS_WRITEBUFFER
    default n
    help
      This causes JFFS2 to read back every page written through the
      write-buffer, and check for errors.

上述代碼是config的常用方式:

config JFFS2_FS_WBUF_VERIFY

在配置界面中配置了該選項(xiàng)后,會(huì)在.config中出現(xiàn) CONFIG_JFFS2_FS_WBUF_VERIFY = y或者m.

bool "Verify JFFS2 write-buffer reads"

在配置界面中將會(huì)顯示Verify JFFS2 write-buffer reads選項(xiàng),bool是變量的類型,一共有5種變量類型:bool、tristate、 string 、hex 、int,bool變量有兩種取值y,m;tristate變量有三種取值y,m,n;string可以取字符串;hex取十六進(jìn)制數(shù);int取十進(jìn)制數(shù)。

depends on JFFS2_FS_WRITEBUFFER

代表只有在JFFS2_FS_WRITEBUFFER被配置時(shí),才會(huì)進(jìn)行該選項(xiàng)的配置。

default n

代表默認(rèn)的情況下是選擇n

select FS_POSIX_ACL

代表在該選項(xiàng)被選種時(shí),會(huì)將FS_POSIX_ACL也選種。

    help
      This causes JFFS2 to read back every page written through the
      write-buffer, and check for errors.

當(dāng)在配置時(shí)按H時(shí)會(huì)顯示該信息。

menu條目

配置界面的主界面是由根目錄下Makefile中ARCH配置決定的,當(dāng)選擇arm時(shí),/arch/arm中的Kconfig文件將會(huì)用來(lái)生成主目錄。

下面的內(nèi)容摘自/arch/arm/Kconfig

mainmenu "Linux Kernel Configuration"

設(shè)定主目錄的名稱

menu "System Type"

將會(huì)創(chuàng)建System Type子目錄

choice條目

choice將多個(gè)類似的配置選項(xiàng)組合在一起,供用戶多選和單選

choice
    prompt "Memory split"
    default VMSPLIT_3G
    help
      Select the desired split between kernel and user memory.
      If you are not absolutely sure what you are doing, leave this
      option alone!
    config VMSPLIT_3G
        bool "3G/1G user/kernel split"
    config VMSPLIT_2G
        bool "2G/2G user/kernel split"
    config VMSPLIT_1G
        bool "1G/3G user/kernel split"
endchoice
    prompt "Memory split"

上述代碼給出提示信息,選中之后就可以進(jìn)行選擇配置

choice條目中定義的變量類型只能是bool和tristate,當(dāng)配置的代碼編譯入內(nèi)核時(shí)為bool,只能有一個(gè)條目選擇為y;當(dāng)編譯成模塊時(shí)為tristate或bool,為bool時(shí),也只能是一個(gè)為y,當(dāng)為tristate時(shí),可以有多個(gè)m。

comment條目

comment條目用于提供幫助信息,出現(xiàn)在配置界面的第一行。

comment "At least one emulation must be selected"

source條目

用于包含其他Kconfig文件

source "drivers/cpuidle/Kconfig"

菜單形式的配置界面的操作方法

配置界面中[*]、< M >、[ ]分別表示相應(yīng)的文件被編譯進(jìn)內(nèi)核、編譯成模塊、沒(méi)有被編譯。

Load an Alertnate Configuration File 
Save an Alertnate Configuration File

當(dāng)執(zhí)行第一條語(yǔ)句時(shí),將.config外的config文件加載,當(dāng)執(zhí)行第二條時(shí),表示存儲(chǔ)成處.config 外的config文件。

四,Linux內(nèi)核配置選項(xiàng)

與移植密切相關(guān)的內(nèi)容是System TypeDevice Driver

內(nèi)核配置主界面內(nèi)容

  1. code maturity level options:代碼成熟度選項(xiàng),包含一些正在開(kāi)發(fā)的或者不成熟的代碼和驅(qū)動(dòng)程序,一般不用設(shè)置
  2. General setup:常規(guī)設(shè)置,比如增加附加的內(nèi)核版本號(hào)、支持內(nèi)存頁(yè)交換功能、System V進(jìn)程間通信等。除非很熟悉其中的內(nèi)容,否則一般使用默認(rèn)配置
  3. Loadable module support:可加載模塊支持:一般都會(huì)打開(kāi)可加載模塊支持(Enable loadable module support )、允許卸載已經(jīng)加載的模塊(Module unloading)、讓內(nèi)核通過(guò)運(yùn)行modprobe來(lái)自動(dòng)加載模塊(Automatic kernel module loading)
  4. block layer:塊設(shè)備層:用于設(shè)置塊設(shè)備的一些總體參數(shù),比如是否支持大于2TB的塊設(shè)備、是否支持大于2TB的文件、設(shè)置IO調(diào)度器,使用默認(rèn)值即可
  5. System Type:系統(tǒng)類型:選擇CPU的架構(gòu)、開(kāi)發(fā)板類型等于開(kāi)發(fā)板相關(guān)的配置選項(xiàng)
  6. Bus support:PCMCIA 、CardBus總線的支持,對(duì)于ARM開(kāi)發(fā)板不需要設(shè)置
  7. Kernel Feature :用于設(shè)置內(nèi)核的一些參數(shù),比如是否支持內(nèi)核搶占,是否支持動(dòng)態(tài)修改系統(tǒng)時(shí)鐘
  8. Boot option:啟動(dòng)參數(shù):比如設(shè)置默認(rèn)的命令行參數(shù)等,一般不用理會(huì)
  9. Floating point emulation:浮點(diǎn)運(yùn)算仿真功能:因?yàn)長(zhǎng)inux內(nèi)核不支持硬件浮點(diǎn)運(yùn)算,所以要選擇一個(gè)浮點(diǎn)仿真器,一般選擇”NWFPE math emulaiton”
  10. Userspace binary formats:可執(zhí)行文件格式:一般都選擇ELF、a.out格式
  11. Power management options電源管理選項(xiàng)
  12. Networking:網(wǎng)絡(luò)協(xié)議選項(xiàng):一般都選擇”Networking support“以支持網(wǎng)絡(luò)功能。通常可以在選擇”Networking support“后,使用默認(rèn)配置
  13. Device Driver:設(shè)備驅(qū)動(dòng)程序:幾乎包含了Linux的所有的驅(qū)動(dòng)程序
  14. File systems:文件系統(tǒng):選擇支持的文件系統(tǒng)
  15. Profiling support:對(duì)系統(tǒng)的或頂進(jìn)行分析,僅供內(nèi)核開(kāi)發(fā)者使用
  16. Kernel hacking:調(diào)試內(nèi)核時(shí)的各種選項(xiàng):Linux設(shè)備驅(qū)動(dòng)程序中有詳細(xì)描述
  17. security options:安全選項(xiàng):一般使用默認(rèn)選項(xiàng)
  18. Cryptographic options:加密選項(xiàng)
  19. Library routines:庫(kù)子程序:比如CRC32檢驗(yàn)函數(shù)、zlib壓縮函數(shù)等。不包含在內(nèi)核源碼中的第三方內(nèi)核模塊可能需要這些庫(kù),可以全不全,內(nèi)核中若有其他部分依賴它,會(huì)自動(dòng)選項(xiàng)

在配置內(nèi)核的時(shí)候按照順序進(jìn)行,因?yàn)榍懊娴呐渲脮?huì)影響后面的。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1415

    瀏覽量

    41259
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11497

    瀏覽量

    213270
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    669

    瀏覽量

    30251
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux內(nèi)核的物理內(nèi)存組織結(jié)構(gòu)詳解

    Linux中內(nèi)存管理子系統(tǒng)使用 節(jié)點(diǎn)(node)、區(qū)域(zone)和頁(yè)(page) 三級(jí)結(jié)構(gòu)描述物理內(nèi)存。
    發(fā)表于 08-21 15:35 ?837次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>的物理內(nèi)存<b class='flag-5'>組織</b><b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>詳解</b>

    Linux內(nèi)核結(jié)構(gòu)詳解

    ,打印警告或錯(cuò)誤信息的過(guò)程,還有系統(tǒng)的調(diào)試?yán)痰鹊取O到y(tǒng)數(shù)據(jù)結(jié)構(gòu)linux內(nèi)核的實(shí)現(xiàn)中,有些數(shù)據(jù)結(jié)構(gòu)使用頻度較高,他們是:task_s
    發(fā)表于 07-11 16:59

    Linux內(nèi)核源碼之我見(jiàn)——內(nèi)核源碼的分析方法

    內(nèi)核源碼之我見(jiàn)Linux內(nèi)核代碼的龐大令不少人“望而生畏”,也正因?yàn)槿绱耍沟萌藗儗?duì)Linux
    發(fā)表于 05-11 07:00

    Linux內(nèi)核源碼目錄結(jié)構(gòu)

    Linux體系結(jié)構(gòu)Linux內(nèi)核結(jié)構(gòu)Linux內(nèi)核
    發(fā)表于 12-30 07:22

    linux 5.4.31為例來(lái)介紹linux內(nèi)核目錄結(jié)構(gòu)

    ,它是Linux內(nèi)核的概述和編譯命令說(shuō)明。readme的說(shuō)明更加針對(duì)X86等通用的平臺(tái),對(duì)于某些特殊的體系結(jié)構(gòu),可能有些特殊的地方。內(nèi)核源碼
    發(fā)表于 02-16 07:30

    Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解》第4章、Linux內(nèi)核模塊

    Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解》第4章、Linux內(nèi)核模塊
    發(fā)表于 10-27 14:15 ?0次下載
    《<b class='flag-5'>Linux</b>設(shè)備驅(qū)動(dòng)開(kāi)發(fā)<b class='flag-5'>詳解</b>》第4章、<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>模塊

    linux內(nèi)核rcu機(jī)制詳解

    Linux內(nèi)核源碼當(dāng)中,關(guān)于RCU的文檔比較齊全,你可以在 /Documentation/RCU/ 目錄下找到這些文件。Paul E. McKenney 是內(nèi)核中RCU
    發(fā)表于 11-13 16:47 ?8971次閱讀
    <b class='flag-5'>linux</b><b class='flag-5'>內(nèi)核</b>rcu機(jī)制<b class='flag-5'>詳解</b>

    詳解Linux內(nèi)核測(cè)試現(xiàn)狀

    of a feather)會(huì)議,Dhaval Ginal和Sasha Levin組織個(gè)關(guān)于內(nèi)核測(cè)試的相關(guān)討論,讓我們起去看看。
    的頭像 發(fā)表于 01-01 09:06 ?3396次閱讀

    需要掌握的Linux內(nèi)核源碼分析方法

    Linux內(nèi)核代碼的龐大令不少人“望而生畏”,也正因?yàn)槿绱耍沟萌藗儗?duì)Linux的了解僅處于泛泛的層次。如果想透析Linux,深入操作系統(tǒng)的本質(zhì),閱讀
    發(fā)表于 04-28 16:54 ?1000次閱讀
    需要掌握的<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>源碼</b>分析方法

    詳解藍(lán)牙模塊原理與結(jié)構(gòu)

    電子發(fā)燒友網(wǎng)站提供《詳解藍(lán)牙模塊原理與結(jié)構(gòu).pdf》資料免費(fèi)下載
    發(fā)表于 11-26 16:40 ?94次下載

    Linux內(nèi)核GPIO操作函數(shù)的詳解分析

    本文檔的主要內(nèi)容詳細(xì)介紹的是Linux內(nèi)核GPIO操作函數(shù)的詳解分析免費(fèi)下載。
    發(fā)表于 01-22 16:58 ?28次下載

    STM32MP157 Linux系統(tǒng)移植開(kāi)發(fā)篇7:Linux內(nèi)核目錄結(jié)構(gòu)詳解

    ,它是Linux內(nèi)核的概述和編譯命令說(shuō)明。readme的說(shuō)明更加針對(duì)X86等通用的平臺(tái),對(duì)于某些特殊的體系結(jié)構(gòu),可能有些特殊的地方。內(nèi)核源碼
    發(fā)表于 12-17 18:29 ?10次下載
    STM32MP157 <b class='flag-5'>Linux</b>系統(tǒng)移植開(kāi)發(fā)篇7:<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>目錄<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>詳解</b>

    AOSP Android11系統(tǒng)源碼內(nèi)核源碼簡(jiǎn)析

    AOSP源碼中并不包括內(nèi)核源碼,需要單獨(dú)下載,內(nèi)核源碼有很多版本,比如common是通用的Linux
    的頭像 發(fā)表于 01-29 09:25 ?6552次閱讀

    Linux內(nèi)核初次編譯和源碼結(jié)構(gòu)

    般半導(dǎo)體廠商會(huì)從 Linux內(nèi)核官網(wǎng)下載某個(gè)版本,將其移植到自己的 CPU上,測(cè)試成功后就會(huì)將其開(kāi)放給該半導(dǎo)體廠商的 CPU開(kāi)發(fā)者。開(kāi)發(fā)者下載其提供的 Linux
    的頭像 發(fā)表于 04-19 11:20 ?1444次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>初次編譯和<b class='flag-5'>源碼</b><b class='flag-5'>結(jié)構(gòu)</b>

    獲取Linux內(nèi)核源碼的方法

    關(guān)鍵功能,今天小編就給各位小伙伴介紹下如何獲取Linux內(nèi)核源碼。獲取Linux內(nèi)核
    的頭像 發(fā)表于 12-13 09:49 ?1006次閱讀
    獲取<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>源碼</b>的方法
    主站蜘蛛池模板: 天天干天天干天天干天天 | 美女一级a毛片免费观看 | 亚洲区在线播放 | 国产福利乳摇在线播放 | 你懂的视频在线观看资源 | 精品久久久久久午夜 | 东莞a级毛片 | 另类专区欧美 | 奇米影视一区二区三区 | 免费看黄色片网站 | 四虎传媒 | 手机在线看片福利盒子 | 爽a中文字幕一区 | 狠狠色丁香婷婷综合久久片 | xxxx性xxxx| 免费人成黄页在线观看1024 | 亚洲电影在线看 | 亚洲国产成人久久99精品 | 性生大片一级毛片免费观看 | 男人和女人做a免费视频 | 成 人 免 费 黄 色 | 劳拉淫欲护士bd字幕 | 午夜毛片福利 | 丁香五月缴情综合网 | 国产私密 | 狠狠色婷婷丁香六月 | 中国一级特黄真人毛片免费看 | 免费观看黄色网页 | 亚洲综合色一区二区三区小说 | 狠狠综合欧美综合欧美色 | 日本亚洲免费 | 一区二区三区高清在线 | 午夜激情网站 | 国产操视频 | 在线天堂中文在线网 | 美女视频黄.免费网址 | 亚洲一区免费看 | 成人毛片在线播放 | 国产免费一级高清淫曰本片 | 日本午夜大片 | 毛片你懂的 |