乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Source Insight加載Linux內(nèi)核.config配置

       XeonGate 2019-12-13

      最近在用Source Insight(以下簡稱SI)閱讀代碼的過程中,發(fā)現(xiàn)Linux內(nèi)核的條件編譯太多了,很影響閱讀效率。探索了一下SI的界面,發(fā)現(xiàn)在“Project->Project Settings...->Conditional Parsing->Conditions...”是有條件解析的配置的,且支持以特定的xml格式導(dǎo)入預(yù)編譯宏。于是寫了一個轉(zhuǎn)換腳本,把Linux內(nèi)核的.config配置文件轉(zhuǎn)換成SI的.conditions.xml配置文件。導(dǎo)入之后就可以讓SI不解析實際上沒有被編譯進(jìn)去的內(nèi)核代碼,而且會以特定的格式顯示無用代碼,減少了閱讀代碼時的干擾。最終效果,如下圖:

      按下面的指南操作,你就可以達(dá)到一樣的效果。

      1、轉(zhuǎn)換腳本“l(fā)kc2sicx.py”所做的工作

      用“make menuconfig”修改內(nèi)核配置后會生成.config文件。該配置文件中典型的配置項有如下幾種:

      # CONFIG_LOCALVERSION_AUTO is not set    ① 未配置的配置項
      CONFIG_PROC_KCORE=y    ② 選中的配置項
      CONFIG_NF_NAT_IPV4=m    ③ 選中并要求編譯成模塊的配置項
      CONFIG_DEFAULT_TCP_CONG="cubic"    ④ 字符串配置項
      CONFIG_SPLIT_PTLOCK_CPUS=4    ⑤ 數(shù)字配置項

      再來看看SI的配置文件格式。在SI的“Conditional Parsing”界面,添加了如下的3個配置:

      “Export...”這個配置,產(chǎn)生的xml配置文件格式如下:

      <?xml version="1.0" encoding="utf-8"?>
      <SourceInsightParseConditions
          AppVer="4.00.0084"
          AppVerMinReader="4.00.0019"
          >
          <ParseConditions>
              <Defines>
                  <define id="a" value="1" />
                  <define id="b" value="0" />
                  <define id="c" value="" />
              </Defines>
          </ParseConditions>
      </SourceInsightParseConditions>

      xml格式較為簡單。只要進(jìn)行如下轉(zhuǎn)換即可,

      # CONFIG_LOCALVERSION_AUTO is not set    =>    <define id="CONFIG_LOCALVERSION_AUTO" value="" />
      CONFIG_PROC_KCORE=y    =>    <define id="CONFIG_PROC_KCORE" value="1" />
      CONFIG_NF_NAT_IPV4=m    =>    <define id="CONFIG_NF_NAT_IPV4" value="1" />
      CONFIG_DEFAULT_TCP_CONG="cubic"    =>    <define id="CONFIG_DEFAULT_TCP_CONG" value="cubic" />
      CONFIG_SPLIT_PTLOCK_CPUS=4    =>    <define id="CONFIG_SPLIT_PTLOCK_CPUS" value="4" />

      .config中未配置的項也要生成是因為,SI默認(rèn)是忽略條件編譯的宏的。如果不顯示說明未定義這個宏,SI在解析代碼的時候就會忽略條件編譯指令,直接解析到宏內(nèi)部的代碼[1]。

      2、下載并使用轉(zhuǎn)換腳本

      下載 >> lkc2sic_v1.0.zip
      下載之后解壓,在命令行運行l(wèi)kc2sicx.py腳本轉(zhuǎn)換配置。用法示例:

      $ ./lkc2sicx.py -s kernel.example.config -d example

      當(dāng)前目錄下就會生成“example.conditions.xml”的SI條件解析配置文件,在SI中導(dǎo)入該文件,重建項目即可。

      3、修改非激活代碼顯示樣式
      在SI中未解析的代碼被稱為未激活代碼(Inavtive code),默認(rèn)格式是灰色的,沒有刪除線。為了更加醒目,可以修改一下未激活代碼的格式?!癘ptions->Style Properties...->Style Name->Inactive Code”,將字體配置的“Strike-Thru”設(shè)置為“ON”即可。如下圖:

      參考
      [1] Source Insight 4.0 用戶手冊,Source Dynamic.Inc

      修訂記錄
      2017-11-01 PM:從網(wǎng)易博客遷移到簡書;
      2017-10-27 PM:完成初稿;

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多