安卓系統之epoll 機制使用

2021-10-07 09:15:37 字數 1113 閱讀 1405

epoll機制(與之相對應的還有select 機制)

bionic/libc/include/sys/epoll.h

#define epoll_ctl_add 1

#define epoll_ctl_del 2

#define epoll_ctl_mod 3

#define epoll_cloexec o_cloexec

typedef union epoll_data epoll_data_t;

struct epoll_event

#ifdefx86_64

__packed

#endif

;int epoll_create(int); //建立epoll控制代碼

int epoll_create1(int);

int epoll_ctl(int, int, int, struct epoll_event*);//控制某個epoll檔案描述符上的事件,可以註冊事件,修改事件,刪除事件

int epoll_wait(int, struct epoll_event*, int, int);//等待事件觸發,當超過timeout還沒有事件觸發時,就超時

int epoll_pwait(int, struct epoll_event*, int, int, const sigset_t*);

__end_decls

#endif /* sys_epoll_h */

使用示例:

frameworks/base/services/core/jni/com_android_server_alarmmanagerservice.cpp

epollfd = epoll_create(n_android_timerfds);

epoll_ctl(epollfd, epoll_ctl_del, fds[i], null);

int alarmimpltimerfd::waitforalarm()

int result = 0;

for (int i = 0; i < nevents; i++) else

} else

}return result;

}close(epollfd);

安卓系統之uevent 機制

uevnet 介紹 uevent是android核心空間與使用者空間進行通訊的一種方式,其本質是通過netlink 通過socket 傳送訊息給使用者程序,使用場景 熱插拔 一uevent 程序的啟動流程 1.system core init init.cpp main if strcmp base...

安卓的handler機制

一 定義 handler是訊息處理的機制,很多耗時的操作,如訪問網路 i o操作等不能在主線程中執行,而這些操作又與ui的變化相關聯。常常採用由子執行緒完成操作,傳送訊息使切換到主線程更新ui的辦法。當然也可以用來獲取資料等。與handle相關的類 message 訊息 messagequeue 訊...

180725 安卓 簽名機制

傳送者將公鑰公開,對於傳送資料的資訊摘要用私鑰加密 接受者用公鑰解密該內容,與接收資料的資訊摘要進行對比 從而保證 1.接收到的資料與發布資料相同 2.傳送者是公開公鑰的私鑰持有人 與https相同,公鑰必須可信才有意義 因此簽名也需要攜帶乙個由可信ca機構簽發的證書,證明該公鑰來自可信的傳送者 s...