type
status
date
slug
summary
tags
category
icon
password
AI 摘要
记一次bpf_probe_read_user_strbpf_probe_read_str的区别。
bpf_probe_read_user_str 用于从用户空间地址读取字符串,会自动处理用户空间和内核空间的地址隔离问题;而 bpf_probe_read_str 用于从内核空间地址读取字符串,适合处理内核数据结构中的字段或 eBPF map 中的内存。简单来说,_user_str 是专为用户空间数据设计的,而 _str 适用于内核空间数据。
具体可以参考如下例子:

bpf_probe_read_user_str

我们可以用这个函数来读取tracepoint中函数的参数。其中ctx上下文就是来自于用户空间的数据,args[1]代表的是sys_enter_openat函数中第二个参数(即文件名称),使用bpf_probe_read_user_str 即可读取到OpenFile结构体变量中。

bpf_probe_read_str

这个函数可以用来读取eBPF map中的数据,因为eBPF map是处于内核空间的,所以这里就需要使用第二个函数。