linux的api
⑴ linux api是linux操作系統直接提供的函數介面。對的還是錯的
Linux系統提供三種介面:
1、圖形界面操作介面,Linux系統一般提供KDE、Gnome等圖形界面介面,目的是方便普通用戶操作計算機。
2、控制台介面,即終端介面,Linux系統一般提供bash shell、cshell等等終端介面,目的是方便系統管理員操作計算機,事實上Linux功能的強大也主要體現在終端介面。
3、API介面:即apllication interface,這是應用程序介面,從編程角度Linux系統就是一個大的程序調用庫,它提供大量的API函數,目的是方便程序員開發應用程序。
⑵ Linux kernel scatterlist API介紹
前言:我們常在處理大量數據交互的子系統,如MMC、Video、Audio中,看到scatterlist的身影。這個術語在非英語母語環境中初見時,常讓人一頭霧水。然而,如果將術語「物理內存」與scatterlist結合,問題便迎刃而解。scatterlist實則是物理內存的列表,將分散的物理內存以有序方式組織在一起。接下來,將闡述其實際用途。
scatterlist產生的背景:與MMU(內存管理單元)的引入緊密相關。在引入MMU後,軟體需要處理虛擬地址與物理地址之間的轉換。但在某些情況下,如通過DMA(直接內存訪問)控制器將數據從一個模塊移至另一個,物理地址的不連續性成為問題。scatterlist在此背景下誕生,作為物理地址的有序列表,用於描述不連續物理內存塊的起始地址、長度等信息。多個scatterlist組合形成一個表,如struct sg_table,可以完整描述虛擬地址空間。scatterlist作為各種映射空間(如VA、PA、DA等)的通用媒介,實現不同映射空間之間的轉換。
scatterlist API介紹:scatterlist用於描述物理地址上連續的內存塊,其定義在「include/linux/scatterlist.h」中。它包含page_link、offset、length、dma_address和dma_length等欄位,分別表示內存塊所在頁面、偏移量、長度、物理地址及長度。struct sg_table作為輔助數據結構,用於存儲scatterlist數組的指針和有效內存塊個數,簡化使用者的操作。
scatterlist的使用規則:數組中有效內存塊的確定由兩個規則指導:如果page_link的bit0為1,表示該scatterlist為鏈表的一部分;如果bit1為1,則表示為數組的最後一個有效內存塊。理解這一規則後,可以更好地利用scatterlist API,如獲取物理地址和長度、判斷鏈表狀態、分配和設置頁面等。
API介紹:scatterlist API包括獲取物理地址和長度(sg_dma_address、sg_dma_len)、判斷鏈表狀態(sg_is_chain、sg_is_last)、獲取頁面信息(sg_assign_page、sg_set_page、sg_page)、分配緩沖區(sg_set_buf)、遍歷數組(for_each_sg)、捆綁鏈表(sg_chain)、標記結束狀態(sg_mark_end、sg_unmark_end)等功能。這些API簡化了內存操作流程,使得數據在不同映射空間間高效轉換。