libcutils 檔案學習整理

2021-07-08 10:27:55 字數 2360 閱讀 5031

原文:

libcutils:

1、uevent.c

在這個檔案中最主要的是下面的這個函式:在這個函式中初始化乙個netlinklist型別的socket後,和一般的linux程式設計一樣先進行繫結,在在後面的呼叫中進行對初始化後的socket進行處理,主要是對接從linux核心傳送來的uevent事件資訊。

int uevent_open_socket(int buf_sz, bool passcred)

其他兩個函式:ssize_t uevent_kernel_multicast_recv(int socket, void *buffer, size_t length)就像乙個recv函式,用來接收來自核心的資訊,這個函式是直接呼叫下面的函式

ssize_t uevent_kernel_multicast_uid_recv(int socket, void *buffer,size_t length, uid_t *user)

threads.c

這個檔案主要是用來對執行緒的處理,包括執行緒結構體的屬性的獲取和執行緒結構體屬性的設定

android_reboot.c

這個檔案主要是用來進行重啟系統,其中主要的根據函式

int android_reboot(int cmd, int flags, char *arg)傳參進來的引數cmd,根據不同的cmd呼叫linux的介面函式reboot,

當引數為android_rb_restart2時直接呼叫__reboot進行重啟,其是一段彙編**。

而在這個函式的前面呼叫函式remount_ro(),主要是判斷/proc/mounts檔案是否再次能寫進去資料

cpu_info.c

這個檔案中主要有乙個函式就是用來通過讀取

/proc/cpuinfo檔案的資訊來解析得到cpu的串號。

atomic.c

這個檔案中主要是就是包含進來了乙個標頭檔案的core/include/cutils/atomic-inline.h,主要是為了在不同的平台進行一些原子操作時而定義的一些內斂函式宣告和巨集定義。無論怎樣就是要設定android_smp為0或1,用來表明是在up還是在smp下面編譯的。

debugger.c

是debuggerd程序中呼叫的兩個函式

dlmalloc_stubs.c

這個裡面的兩個函式主要是bionic/libc/bionic/dlmalloc.c種備份函式,因為當在主機編譯的時候主機libc裡面不含有這兩個函式但會用到。

fs.c

這個檔案中主要是一些關於檔案的讀寫操作。

hashmap.c

這個檔案主要是有關雜湊表的操作

klog.c

這個檔案中有三個函式,分別是設定列印除錯資訊級別,生成/dev/__kmsg__虛擬裝置記錄log,向日誌檔案中寫日誌

list.c

這個檔案主要是和核心鍊錶一樣的操作,包括初始化,新增乙個節點,刪除乙個節點;

load_file.c

就乙個函式用來讀寫檔案中資訊

memory.c

主要實現了strlcpy函式

multiuser.c

ashmem-dev.c

這個檔案主要有5個函式,其中第乙個函式 ashmem_create_region(const char *name, size_t size) 主要是建立一塊新的以name為標籤或是無標籤的大小為size的記憶體共享區。

ashmem_set_prot_region(int fd, int prot)申請共享記憶體空間,ashmem_set_prot_region設定引數,ashmem_pin_region /ashmem_unpin_region通過ashmem_pin和ashmem_unpin連個操作來實現匿名共享記憶體的鎖定和解鎖操作ashmem_get_size_region得到匿名共享記憶體區的大小。

ashmem-host.c

這個檔案和上面的檔案函式相重合,這塊牽扯到記憶體共享,要從整體進行分析這塊。

config_utils.c

這個檔案主要對鍊錶的一些操作,包括建立,查詢,修改等。

libsysutils:

1、frameworkclient.cpp:

實現類frameworkclient類中一些函式:建構函式,通過socket傳送訊息的函式,後面的函式sendmsg(const char *msg, const char *data)實質是呼叫sendmsg(const char *msg)函式。

frameworkcommand.cpp

實現類frameworkcommand的建構函式,實現了乙個虛函式,等待繼承類重寫

frameworklistener.cpp

frameworklistener類繼承自socketlistener類,在這個檔案中主要是實現frameworklistener類的一些方法,

檔案操作學習後整理

c語言中沒有輸入輸出語句,所有的輸入輸出功能都用 ansi c提供的一組標準庫函式來實現。檔案操作標準庫函式有 檔案的開啟操作 fopen 開啟乙個檔案 檔案的關閉操作 fclose 關閉乙個檔案 檔案的讀寫操作 fgetc 從檔案中讀取乙個字元 fputc 寫乙個字元到檔案中去 fgets 從檔案...

標頭檔案整理

是c 標準定義的標頭檔案,它定義了乙個 string 的字串類,裡面包含了 string 類的各種操作,如 s.size s.erase s.insert 等。但又包含了老的 c版本的字串操作如 strcpy strcat 等,這就相當於,在 的檔案中除了定義自己的 string 類之外,還加了乙個...

檔案操作整理

r 以讀方式開啟,只能讀檔案 如果檔案不存在,會發生異常 w 以寫方式開啟,只能寫檔案,如果檔案不存在,建立該文。如果檔案已存在,先清空,再開啟檔案 rb 以二進位制讀方式開啟,只能讀檔案 如果檔案不存在,會發生異常 wb 以二進位制寫方式開啟,只能寫檔案,如果檔案不存在,建立該檔案。如果檔案已存在...