最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

ebpf開發(fā)bcc之opensnoop方法源碼閱讀(上)

2023-04-09 23:01 作者:云知道B  | 我要投稿

今天一起來閱讀libbpf-tools下使用C語言開發(fā)的工具opensnoop

opensnoop 功能是監(jiān)聽 syscalls 下的open方法的一個調(diào)用,使用此工具進(jìn)行open函數(shù)的可觀測性打印

下面直接開始源碼閱讀

這里只列舉出關(guān)鍵方法,其余方法在視頻中學(xué)習(xí)

opensnoop.bpf.c? 內(nèi)核態(tài)程序,他的作用是程序加載到ebpf虛擬機(jī)之后,當(dāng)發(fā)生系統(tǒng)調(diào)用'open' 后觸發(fā)對應(yīng)的內(nèi)核態(tài)方法執(zhí)行,下面一一列出方法的詳細(xì)說明

這里不得不說下:

以下三個介紹統(tǒng)屬于跟蹤文件系統(tǒng):

tracepoint : 跟蹤點(對于新人來說此時暫且理解ebpf中這個聲明是固定的,他的類型很多我們在別的篇幅中專門對他進(jìn)行學(xué)習(xí))

syscalls: 跟蹤點類型(在 debugfs 中對跟蹤點的類型進(jìn)行了各種的分類,如:TCP,電源,系統(tǒng)調(diào)用,網(wǎng)絡(luò)等等類型這個也在以后章節(jié)中說明)

sys_enter_open: 跟蹤點的名稱(他是由linux內(nèi)核管理者進(jìn)行維護(hù),隨著linux版本的升級跟蹤點名字不會發(fā)生改變,提供了更好的版本兼容性,通俗的說sys_enter_open的聲明對應(yīng)著系統(tǒng)調(diào)用中的 open方法)

SEC("tracepoint/syscalls/sys_enter_open") 的定義意味著如果linux內(nèi)核方法open方法發(fā)生調(diào)用時將觸發(fā)下面的 tracepoint__syscalls__sys_enter_open(struct trace_event_raw_sys_enter* ctx) 方法的執(zhí)行。

與上方相對應(yīng)的還有一個,當(dāng)open 方法執(zhí)行完畢以后會觸發(fā)下方內(nèi)核態(tài)函數(shù)的執(zhí)行

細(xì)心點可以發(fā)現(xiàn)這里使用的跟蹤點名稱是sys_exit_open 他和sys_enter_open"是成對出現(xiàn),在跟蹤系統(tǒng)文件中默認(rèn)這樣定義的,對于我們來說,當(dāng)進(jìn)入(enter) 一個方法時,我們可以拿到方法的參數(shù)信息,當(dāng)退出(exit)一個方法時我們可以得到一個方法返回值信息。

下面我們看以下方法:

trace_exit();

代碼中的注釋寫的很詳細(xì),其中我們重點關(guān)心的方法是

bpf_perf_event_output() 方法 他使用到環(huán)形緩沖區(qū)機(jī)制,更好的達(dá)到了數(shù)據(jù)傳輸?shù)臏?zhǔn)確性(避免打印錯亂,無數(shù)據(jù)大小限制)和性能,將event中當(dāng)前發(fā)生的事件結(jié)果映射到events Array類型的結(jié)構(gòu)體中供用戶態(tài)使用

opensnoop 內(nèi)核態(tài)學(xué)習(xí)到此結(jié)束,下章分享學(xué)習(xí)用戶態(tài)程序的實現(xiàn)方法



ebpf開發(fā)bcc之opensnoop方法源碼閱讀(上)的評論 (共 條)

分享到微博請遵守國家法律
晋城| 高雄县| 梁山县| 浦北县| 铁岭市| 新兴县| 合川市| 乳源| 延川县| 连州市| 中牟县| 靖江市| 云浮市| 微博| 宿迁市| 井研县| 瑞昌市| 威宁| 连州市| 金塔县| 西安市| 昌乐县| 湘西| 巴林左旗| 宝鸡市| 永年县| 云浮市| 江安县| 苏尼特左旗| 鄂伦春自治旗| 驻马店市| 承德市| 阳江市| 西昌市| 连山| 陇西县| 永胜县| 房山区| 栖霞市| 天峨县| 贺兰县|