1. 程式人生 > >ACE原始碼目錄結構

ACE原始碼目錄結構

 

ACE(ADAPTIVE Communication Environment),中文的意思就是自適配通訊環境,ACE是一個用於開發網路程式的優秀的C++的框架,在國外有很廣泛的使用,在國內一些大的開發通訊產品的公司也有使用。我接觸ACE也有一段時間了,雖然時間不長,但我還是感覺到ACE確實是一個好東西,對於豐富自己的知識面有很大的幫助。雖然我們專案目前是採用C語言來開發,但是當接觸ACE後,你會發現“喔,原來程式還可以這樣”。例如:我覺得ACE裡面Reactor框架就是一個非常的東西,我們在開發網路程式的時候,常常採用poll來監視各種網路事件,但當採用該框架後,你現在只是需要關係你的業務邏輯,當發生特定的網路事件後,框架會回撥你的業務邏輯。其實按照這個思路,我們完全可以用C來實現類似的功能,當你完成這個後,你會發現你原來用C語言寫的過程風格的程式碼竟然有了OO的味道。

ACE確實是好東西,但也不是能輕鬆的就能掌握的,我們還需要一步一步的來蠶食這個大象。

萬丈高樓平地起,首先我們還是瞭解一下ACE的目錄結構,從整體上對ACE有一個認識,為今後的進一步學習打下一個基礎。

解開ACE的壓縮包後,你會發現一個ACE_wrappers目錄,這個目錄也就是ACE的HOME目錄,它下面還包含著一些子目錄:

ace:這個目錄是ACE中最重要的目錄,它包含了ACE的所有原始碼,但遺憾的是,ACE的所有原始檔和標頭檔案全部雜亂的堆在這個目錄裡,這可能也是很多開源軟體的缺點。其實ACE的程式碼完全可以按照不同的功能進行不同目錄的劃分,例如:Reactor框架和thread框架程式碼完全可以劃分開,我想一個程式碼組織良好的ACE,將會給大家的學習帶來極大的好處,我將在後面的文章裡給出ACE程式碼劃分的方法;
ACEXML:這個目錄包含了用ACE實現的一個XML解析器;
apps:這個目錄包含了用ACE來實現的一些較大的應用程式,例如:JAWS,一個WEB伺服器;

ASNMP:基於ACE的SNMP協議實現;
bin:包含裡用例方便開發的perl指令碼程式,例如:在WIN32上開發DLL時候,需要匯出DLL的介面;
docs:ACE的一些幫助文件,其中ACE-subsets.html文件,對我們劃分ACE的程式碼有很大的幫助;

examples:是用ACE來編寫的一些例子程式,方便更好的學習和理解ACE;
include:也是ACE中一個比較重要的目錄,它包含了在不同的平臺上編譯時候的編譯規則,庫的編譯規則等;
netsvcs:一些基於ACE的在分散式系統中常用的程式,例如:分散式系統日誌系統,網路鎖,時間同步等;

TAO:基於ACE的實時CORBA實現,TAO在分散式系統中使用相當廣泛,也是一個不可多得的好資源;
tests:用來對ACE進行迴歸測試,也提供了一個學習ACE的很好的例子程式碼;

***********************************************************************************************************************************

前幾篇文章也提到過,ACE的所有原始檔和標頭檔案都雜亂堆在了ACE_wrappers/ace目錄下。這樣的程式碼組織方式給學習ACE帶來了很大的困難,很多朋友在看到ace目錄下龐大的程式碼的時候,幾乎就失去了學習ACE的信心^_^。因此,我們有必要對ACE的程式碼進行重新組織,以降低學習曲線。下面,我將給出我對ACE原始碼的劃分方法。其實,我也是剛學習ACE沒有多久,對ACE的瞭解還甚少,所以,我的原始碼劃方式法不一定十分正確,這裡共享出來,僅供大家參考。

其實,在ACE的幫助文件裡,ACE-subsets.html和ACE-categories.html,這兩個文件對指導ACE的原始碼劃分起到了很大的作用,否則,我剛剛接觸ACE,就想對其進行原始碼劃分,是不可能完成的。ACE-subsets.html,這個文件主要介紹了ACE的library subsetting。正常情況下,在編譯完ACE後,只會產生一個ACE的庫。我們可以根據該文件的介紹,簡單的修改一下Makefile,就可以對ACE的庫進行子集化,我們可以編譯出OS、Thread等這樣的子庫。ACE-categories.html,這個文件對ACE中的程式碼進行了一些功能上的分類。具體大家可以詳細的參考一下這兩個文件,這兩個文件對學習ACE還是有一定的幫助的。

在ACE的原始碼目錄ace下,我將建立很多子目錄,來對ACE的程式碼進行按功能分類:


ACE_OS:該目錄裡包含的程式碼是OS的API的wrapper,也就是ACE的OS適配層;
包含程式碼: ARGV.cpp          OS_Memory.cpp
   Argv_Type_Converter.cpp     OS_QoS.cpp
   Base_Thread_Adapter.cpp     OS_String.cpp
   Basic_Types.cpp             OS_TLI.cpp
   Copy_Disabled.cpp           OS_Thread_Adapter.cpp
   Env_Value_T.cpp             Sched_Params.cpp
   Handle_Set.cpp         Template_Instantiations.cpp
   Makefile                    Thread_Hook.cpp
   OS.cpp                      Time_Value.cpp
   OS_Dirent.cpp                
   OS_Errno.cpp                 
   OS_Log_Msg_Attributes.cpp

ACE_Codec:該目錄包含的是ACE的各種編碼型別的處理程式碼,目前只包含了BASE64編碼的處理;
    包含程式碼:Codecs.cpp    Makefile


ACE_Connection:該目錄包含的是ACE中的Acceptor-Connector框架程式碼和非同步通訊類程式碼;
   包含程式碼:Acceptor.cpp            Connector.cpp
    Asynch_Acceptor.cpp             Makefile
    Asynch_Connector.cpp         POSIX_Asynch_IO.cpp
    Asynch_IO.cpp                   Strategies_T.cpp
    Asynch_IO_Impl.cpp              Svc_Handler.cpp
    Asynch_Pseudo_Task.cpp       WIN32_Asynch_IO.cpp
    Cached_Connect_Strategy_T.cpp  
    Caching_Strategies_T.cpp      

ACE_Demux:該目錄包含的是ACE中的Reactor和Proactor框架程式碼;
    包含程式碼:Dev_Poll_Reactor.cpp      Priority_Reactor.cpp      TP_Reactor.cpp        Event_Handler.cpp         Proactor.cpp              TkReactor.cpp
   Event_Handler_T.cpp       QtReactor.cpp             WFMO_Reactor.cpp
   FlReactor.cpp             Reactor.cpp               WIN32_Proactor.cpp
   Makefile                  SUN_Proactor.cpp          XtReactor.cpp
   Msg_WFMO_Reactor.cpp      Select_Reactor.cpp       
   POSIX_CB_Proactor.cpp     Select_Reactor_Base.cpp  
   POSIX_Proactor.cpp        Select_Reactor_T.cpp

ACE_IPC:該目錄包含的是ACE中程序間通訊的一些封裝程式碼:
包含程式碼:ATM_Acceptor.cpp             Makefile
   ATM_Addr.cpp                 Pipe.cpp
   ATM_Connector.cpp            SPIPE.cpp
   ATM_Params.cpp               SPIPE_Acceptor.cpp
   ATM_QoS.cpp                  SPIPE_Addr.cpp
   ATM_Stream.cpp               SPIPE_Connector.cpp
   DEV.cpp                      SPIPE_Stream.cpp
   DEV_Addr.cpp                 SV_Message.cpp
   DEV_Connector.cpp            SV_Message_Queue.cpp
   DEV_IO.cpp                   SV_Semaphore_Complex.cpp
   FIFO.cpp                     SV_Semaphore_Simple.cpp
   FIFO_Recv.cpp                SV_Shared_Memory.cpp
   FIFO_Recv_Msg.cpp            Signal.cpp
   FIFO_Send.cpp                TLI.cpp
   FIFO_Send_Msg.cpp            TLI_Acceptor.cpp
   FILE.cpp                     TLI_Connector.cpp
   FILE_Addr.cpp                TLI_Stream.cpp
   FILE_Connector.cpp           TTY_IO.cpp
   FILE_IO.cpp                  Typed_SV_Message.cpp
   IOStream.cpp                 Typed_SV_Message_Queue.cpp
   IOStream_T.cpp               UNIX_Addr.cpp
   IO_SAP.cpp                   UPIPE_Acceptor.cpp
   MEM_Acceptor.cpp             UPIPE_Connector.cpp
   MEM_Addr.cpp                 UPIPE_Stream.cpp
   MEM_Connector.cpp            XTI_ATM_Mcast.cpp
   MEM_IO.cpp                  
   MEM_SAP.cpp                 
   MEM_Stream.cpp

ACE_LIB:該目錄將包含ACE編譯好的各個子庫;

ACE_Logging:該目錄包含ACE中的日誌處理相關程式碼;
       包含程式碼:Dump.cpp                   Log_Msg_UNIX_Syslog.cpp
   Dump_T.cpp                 Log_Record.cpp
   Log_Msg.cpp                Logging_Strategy.cpp
   Log_Msg_Backend.cpp        Makefile
   Log_Msg_Callback.cpp       Trace.cpp
   Log_Msg_IPC.cpp           
   Log_Msg_NT_Event_Log.cpp 

ACE_Memory:該目錄包含了ACE記憶體處理相關程式碼;
     包含程式碼:Based_Pointer_Repository.cpp   Obstack.cpp
   Based_Pointer_T.cpp            Obstack_T.cpp
   Makefile                       PI_Malloc.cpp
   Malloc.cpp                     Read_Buffer.cpp
   Malloc_Allocator.cpp           Shared_Memory.cpp
   Malloc_Instantiations.cpp      Shared_Memory_MM.cpp
   Malloc_T.cpp                   Shared_Memory_SV.cpp
   Mem_Map.cpp                   
   Memory_Pool.cpp               
   Obchunk.cpp

ACE_Misc:ACE中一些沒有明確功能分類的程式碼,屬於雜項;
   包含程式碼:CE_Screen_Output.cpp   NT_Service.cpp
   Makefile               gethrtime.cpp

ACE_Nameservices:該目錄包含了ACE中名字服務相關程式碼;
    包含程式碼: Name_Space.cpp
    Local_Name_Space.cpp           Naming_Context.cpp
    Local_Name_Space_T.cpp         Registry_Name_Space.cpp
    Makefile                       Remote_Name_Space.cpp
    Name_Proxy.cpp                
    Name_Request_Reply.cpp       

ACE_Sockets:該目錄包含的是ACE的socket封裝程式碼;
      包含程式碼:Addr.cpp                       SOCK_CODgram.cpp
   INET_Addr.cpp                  SOCK_Connector.cpp
   IPC_SAP.cpp                    SOCK_Dgram.cpp
   LOCK_SOCK_Acceptor.cpp         SOCK_Dgram_Bcast.cpp
   LSOCK.cpp                      SOCK_Dgram_Mcast.cpp
   LSOCK_Acceptor.cpp             SOCK_IO.cpp
   LSOCK_CODgram.cpp              SOCK_SEQPACK_Acceptor.cpp
   LSOCK_Connector.cpp            SOCK_SEQPACK_Association.cpp
   LSOCK_Dgram.cpp                SOCK_SEQPACK_Connector.cpp
   LSOCK_Stream.cpp               SOCK_Stream.cpp
   Makefile                       Sock_Connect.cpp
   Multihomed_INET_Addr.cpp      
   SOCK.cpp                      
   SOCK_Acceptor.cpp

ACE_Streams:該目錄包含了ACE中的Streams和Task框架程式碼;
      包含程式碼:CDR_Base.cpp                        Module.cpp
   CDR_Stream.cpp                      Multiplexor.cpp
   Codeset_IBM1047.cpp                 Reactor_Notification_Strategy.cpp
   Codeset_Registry.cpp                Stream.cpp
   Codeset_Registry_db.cpp             Stream_Modules.cpp
   IO_Cntl_Msg.cpp                     Task.cpp
   Makefile                            Task_T.cpp
   Message_Queue.cpp                  
   Message_Queue_T.cpp  

ACE_Svcconf:該目錄包含了ACE中的Service Configurator框架程式碼;
      包含程式碼:DLL.cpp                    Service_Types.cpp
   DLL_Manager.cpp            Shared_Object.cpp
   Dynamic_Service.cpp        Svc_Conf.l
   Dynamic_Service_Base.cpp   Svc_Conf.y
   Makefile                   Svc_Conf_Lexer_Guard.cpp
   Parse_Node.cpp             Svc_Conf_l.cpp
   Service_Config.cpp         Svc_Conf_y.cpp
   Service_Manager.cpp        XML_Svc_Conf.cpp
   Service_Object.cpp        
   Service_Repository.cpp    
   Service_Templates.cpp

ACE_Threads:該目錄包含了ACE中的執行緒和同步機制相關程式碼,例如:thread manager;
      包含程式碼:Activation_Queue.cpp      Process_Manager.cpp       Thread.cpp
   Atomic_Op.cpp             Process_Mutex.cpp         Thread_Adapter.cpp
   Atomic_Op_T.cpp           Process_Semaphore.cpp     Thread_Control.cpp
   File_Lock.cpp             RW_Process_Mutex.cpp      Thread_Exit.cpp
   Future.cpp                Synch.cpp                 Thread_Manager.cpp
   Future_Set.cpp            Synch_Options.cpp         Token.cpp
   Makefile                  Synch_T.cpp              
   Process.cpp               Test_and_Set.cpp        

ACE_Timer:該目錄包含ACE中和時間相關的程式碼;
     包含程式碼:Timer_Heap.cpp
   Basic_Stats.cpp            Timer_Heap_T.cpp
   High_Res_Timer.cpp         Timer_List.cpp
   Makefile                   Timer_List_T.cpp
   Profile_Timer.cpp          Timer_Queue.cpp
   System_Time.cpp            Timer_Queue_Adapters.cpp
   Time_Request_Reply.cpp     Timer_Queue_T.cpp
   Timeprobe.cpp              Timer_Wheel.cpp
   Timeprobe_T.cpp            Timer_Wheel_T.cpp
   Timer_Hash.cpp            
   Timer_Hash_T.cpp         

ACE_Token:Token是ACE中實現的一種同步機制,保證嚴格的FIFO或LIFO策略來獲得鎖。ACE通過Token機制實現了分散式同步機制。
     包含程式碼:Local_Tokens.cpp          Token_Collection.cpp      Token_Request_Reply.cpp
   Makefile                  Token_Invariants.cpp     
   Remote_Tokens.cpp         Token_Manager.cpp       

ACE_Utils:ACE中的一些基礎資料結構和演算法的工具類程式碼;
    包含程式碼:ACE.cpp                             Init_ACE.cpp
   Active_Map_Manager.cpp              Intrusive_List.cpp
   Active_Map_Manager_T.cpp            Intrusive_List_Node.cpp
   Arg_Shifter.cpp                     Lib_Find.cpp
   Array_Base.cpp                      Makefile
   Auto_IncDec_T.cpp                   Managed_Object.cpp
   Auto_Ptr.cpp                        Map.cpp
   Cache_Map_Manager_T.cpp             Map_Manager.cpp
   Caching_Utility_T.cpp               Map_T.cpp
   Capabilities.cpp                    Message_Block.cpp
   Cleanup_Strategies_T.cpp            Message_Block_T.cpp
   Configuration.cpp                   Method_Request.cpp
   Configuration_Import_Export.cpp     Node.cpp
   Connection_Recycling_Strategy.cpp   Notification_Strategy.cpp
   Containers.cpp                      Object_Manager.cpp
   Containers_T.cpp                    Pair.cpp
   Date_Time.cpp                       Pair_T.cpp
   Dirent.cpp                          RB_Tree.cpp
   Dirent_Selector.cpp                 Recyclable.cpp
   Dynamic.cpp                         Refcountable.cpp
   Filecache.cpp                       Registry.cpp
   Flag_Manip.cpp                      SString.cpp
   Framework_Component.cpp             Sample_History.cpp
   Framework_Component_T.cpp           Singleton.cpp
   Free_List.cpp                       Stats.cpp
   Functor.cpp                         String_Base.cpp
   Functor_T.cpp                       String_Base_Const.cpp
   Get_Opt.cpp                         Swap.cpp
   Handle_Ops.cpp                      Unbounded_Queue.cpp
   Hash_Cache_Map_Manager_T.cpp        Unbounded_Set.cpp
   Hash_Map_Manager.cpp                Unbounded_Set_Ex.cpp
   Hash_Map_Manager_T.cpp              Vector_T.cpp
   Hash_Map_With_Allocator_T.cpp      
   Hashable.cpp                      

include:該目錄又包含子目錄ace,也就是說include/ace/目錄下,包含了ACE的所有標頭檔案和.i檔案,之所以這樣組織,是因為ACE中的源 檔案和標頭檔案的包含檔案的方式為:#include "ace/OS.h",所以採用這種目錄結構方式來存放標頭檔案和.i檔案。這裡,對標頭檔案和.i   檔案,沒有進一步按照功能劃分,就是因為#include "ace/OS.h"這種包含方式,如果標頭檔案和.i檔案也按照功能劃分,那麼程式碼修改 量相當大;
           

通過上面給出的目錄結構和原始檔功能劃分及標頭檔案組織方式,相信讀者以可以自行對ACE程式碼進行整理了。在實際整理和編譯程式碼的過程中,需要修改Makefile和ACE標頭檔案中以_T方式為字尾的標頭檔案,例如:Obstack_T.h,需要修改裡面模板原始檔包含路徑。我將在下一篇文章中進行描述。

我再次強調,上面ACE原始碼劃分方式,不一定十分正確^_^,隨著我們ACE學習和理解的深入,我們可能會進行更改。其實,在我們整理ACE原始檔的時候,我們可以進一步瞭解ACE的各個原始檔大致功能,對我們以後更深入的學習大有裨益。

***********************************************************************************************************************************

在ACE的原始碼目錄裡,有原始檔.cpp、標頭檔案.h,我們還發現有以.i和.inl為副檔名的檔案。其實,以.i和.inl為副檔名的檔案是ACE原始碼中inline函式的存放形式。

在說明ACE中為什麼採用這種方式來存放inline函式之前,我們來說一下inline關鍵字是什麼意識。我們知道當呼叫一個函式的時候,涉及到返回地址和引數壓棧等一些操作,這些操作是函式呼叫本身的開銷。在原來的C程式碼中,通常採用巨集定義的方式模擬函式,來消除函式呼叫的開銷,因此我們知道巨集是在預編譯時候進行處理的。但是,巨集定義本身也有很多缺陷,很容易造成錯誤的使用。這就是inline關鍵字誕生的原因。用inline關鍵字定義的函式,在編譯的時候,並不會產生真正的函式,而是在該函式呼叫處直接展開程式碼,這樣就消除了函式呼叫的開銷。注意,inline關鍵字,只是給編譯器的一個暗示,是不是真的進行了inline處理,是由編譯器決定的。

那為什麼ACE會採用這樣一個特殊的方式來存放inline函呢?我們結合例項給出答案。
我們看一下,Reactor.h檔案的結尾處,有如下的處理:
#if defined (__ACE_INLINE__)
#include "ace/Reactor.i"
#endif /* __ACE_INLINE__ */

在看一下Reactor.cpp檔案開頭處的巨集處理:
#if !defined (__ACE_INLINE__)
#include "ace/Reactor.i"
#endif /* __ACE_INLINE__ */

上面的Reactor.h,Reactor.cpp和Reactor.i檔案是ACE的Reactor框架的相關程式碼。上面的巨集定義我們很好理解,在標頭檔案中的處理為:如果定義了巨集__ACE_INLINE__,那麼我們就把Reactor.i檔案include到標頭檔案中。在原始檔中處理為:如果沒有定義巨集__ACE_INLINE__,那麼就把Reactor.i檔案include到原始檔中。其實有了上面inline含義的介紹,我們不難理解為什麼採用這種方式來進行處理。這裡我們假設定義了巨集__ACE_INLINE__,並且Reactor.i檔案是被include到原始檔裡,而不是被include標頭檔案裡,那麼會產生什麼後果那?我們知道inline函式,在編譯器編譯後,是不會產生真正的函式的,因此,如果有其它原始檔,例如zhx.cpp,呼叫了Reactor.i檔案中的inline函式,那麼在連線的時候,就會丟擲符號無法解析的錯誤,而如果Reactor.i檔案是被include到了標頭檔案中,並且我們在zhx.cpp中有呼叫Reactor.i檔案中的函式,那麼在zhx.cpp中,只需要包含Reactor.h標頭檔案即可,則Reactor.i的相關inline函式在zhx.cpp也進行了程式碼展開處理。如果沒有定義巨集__ACE_INLINE__,則Reactor.i被include到原始檔中,沒有任何問題,因為Reactor.i中的函式在編譯後,會產生真正的函式,而不是被inline處理。這就是ACE為什麼採用這樣的方式進行處理的原因。

在上面的介紹中,我們同時也發現了inline的缺點,就是它會造成程式碼的膨脹。因此,不是什麼樣的函式都適合用inline來定義,只有那些短小的函式才適合採用inline處理。

注:ACE為什麼會採用.i和.inl兩種副檔名形式的檔案來存放inline函式,我還不是很清楚,但感覺以.inl形式存放的檔案是早期ACE程式碼中的方式,後期的ACE程式碼採用.i方式來存放inline函式,也就是說這應該是一個歷史遺留問題^_^,開源專案的缺點。

相關推薦

ACE原始碼目錄結構

  ACE(ADAPTIVE Communication Environment),中文的意思就是自適配通訊環境,ACE是一個用於開發網路程式的優秀的C++的框架,在國外有很廣泛的使用,在國內一些大的開發通訊產品的公司也有使用。我接觸ACE也有一段時間了,雖然時間不長,但我還是感覺到ACE確實是一個好東西

Android原始碼目錄結構詳解

轉自:http://blog.csdn.net/xiangjai/article/details/9012387 在學習Android的過程中,學習寫應用還好,一開始不用管太多程式碼,直接呼叫函式就可以了,但是工作中卻需要修改到framework之類的東東 所以感覺開始糾結了,又是

Android原始碼目錄結構

Android 4.0 |-- Makefile |-- bionic (bionic C庫) |-- bootable (啟動引導相關程式碼) |-- build (存放系統編譯規則及generic等基礎開發包配置) |-- cts (Android相容性測試套件標準) |-- dalvik (dalvik

Android 8原始碼目錄結構詳解

   |-  art // Android Runtime,一種App執行模式,區別於傳統的Dalvik虛擬機器,旨在提高Android系統的流暢性,包括以下目錄                |-  benchmark // 程式測試基準。             |- 

WebRTC M64 原始碼目錄結構分析

WebRTC M64 原始碼目錄結構分析 WebRTC框架圖 目錄結構分析 api WebRTC 介面層。包括 DataChannel, MediaStream, SDP相關的介面。各瀏覽器都是通過該介面層呼叫的 WebRTC audio 存放音訊網路邏輯層

【安卓本卓】Android系統原始碼篇之(一)原始碼獲取、原始碼目錄結構原始碼閱讀工具簡介

前言 古人常說,“熟讀唐詩三百首,不會作詩也會吟”,說明了大量閱讀詩歌名篇對學習作詩有非常大的幫助。做開發也一樣,Android原始碼是全世界最優秀的Android工程師編寫的程式碼,也是Android開發中絕對的權威所在。Android系統開源,且佔據了當今手機系統世界的絕大部分江山,各大手機廠商要做手機系

安卓系統之旅——最全的Android原始碼目錄結構

android平臺四層架構對應原始碼中的目錄:第一層:應用程式層(applications)對應根目錄下packages/apps第二層:應用程式框架層(application framework)對應根目錄下的frameworks第三層:執行庫層包括執行庫(librari

Android 5.1.1 原始碼目錄結構說明

Android 5.1.1 |-- bootable (啟動引導相關程式碼) |-- Makefile |-- abi (applicationbinary interface,應用程式二進位制介面,生成libgabi++.so相關庫檔案) |-- art (google在4.4後

Android原始碼 目錄結構分析

Google提供的Android包含了原始android的目標機程式碼,主機編譯工具、模擬環境,下載的程式碼包經過解壓後(這裡是Android2.2的原始碼包),原始碼的第一層目錄結構如下: |– Makefile |– bionic

編譯android原始碼7---android 原始碼目錄結構

Android  |-- Makefile (全域性的Makefile) |-- bionic                        (Android 標準C執行支援庫) |-- bootable                (Android核心載入器

【Arch】Android 7 Nougat原始碼目錄結構分析

|- art // Android Runtime,一種App執行模式,區別於傳統的Dalvik虛擬機器,旨在提高Android系統的流暢性,包括以下幾個目錄。 |- benchmark // 程式測試基準。

Linux核心原始碼目錄結構詳解

    3.1 Linux核心原始碼目錄如下:         /arch:目錄包括了所有和體系結構相關的核心程式碼。它下面的每一個子目錄都代表一種Linux支援的體系結構,例如i386就是Intel

Linux原始碼目錄結構說明

3.3 核心原始碼目錄結構 瀏覽核心程式碼之前,有必要知道核心原始碼的整體分佈情況,按照慣例,核心程式碼安裝在/usr/src/linux目錄下,該目錄下的每一個子目錄都代表了一個特定的核心功能性子集,下面針對2.6.23版本進行簡單描述。 (1)Documentation。 這個目錄下面沒有核心程

Linux原始碼目錄結構和Linux檔案系統目錄結構

學習Linux也有一段時間了,具體來整理一下Linux原始碼的目錄結構和檔案系統的目錄結構,以便加深記憶。一、Linux原始碼的目錄結構首先上一張截圖,如下所示:再看各個檔案的介紹,借用一下其他資源。arch:這個為目錄是架構相關,裡面存放了許多CPU架構,比如arm,x86

最全的Android原始碼目錄結構詳解

android平臺四層架構對應原始碼中的目錄: 第一層:應用程式層(applications)對應根目錄下packages/apps 第二層:應用程式框架層(application framework)對應根目錄下的frameworks 第三層:執行庫

flask原始碼筆記:二,Flask原始碼目錄結構

在目錄下執行ls命令可以瞭解到,Flask原始碼目錄的大致結構,如果需要以樹狀顯示目錄結構,可以使用命令tree。 (venv)[[email protected] flask]# ls app.py          config.pyc        exth

Android 5.1.1 原始碼目錄結構

最近公司培訓新同事,我負責整理一點關於android的基礎知識,遙想當年,剛接觸android,也是一頭霧水, 啥都不懂,就是靠看文件和視訊,對android有一個初步瞭解,然後就通過檢視原始碼,才有更深入的瞭解。 android有成千上萬,說太少了,是成百萬上億的程

uCOS-II原始碼下載及原始碼目錄結構

  攻克RTOS之旅,揚帆起航!   RTOS有眾多種,個人感覺,用得最火的是FreeRTOS,因為它即使用於商業途徑,也是開源免費的;其次是就是uCOS-II和uCOS-III。uCOS-II用於商業途徑是需要付費的,但是對於學習研究卻是免費的。它們同是嵌入

linux核心原始碼目錄結構分析

注:本文是學習朱老師課程整理的筆記,基於linux2.6.35.7和九鼎X210BV3S開發板進行移植。 /arch。arch是architecture的縮寫。arch目錄下是好多個不同架構的CP

linux 核心原始碼 目錄結構 介紹

注意:各個版本結構稍有不同,不要死板硬套。 arch arch:包含和硬體體系結構相關的程式碼,每種平臺佔一個相應的目錄。它下面的每個子目錄代表一種linux支援的體系結構。 和32位PC相關的程式碼存放在i386目錄下,其中比較重要的包括kernel(核心核心部分)、