是否可以使用eBPF跟踪通过文本文件读取的内容?有一些方法可以查看正在使用的内存量以及读取和写入计数,但如果可能的话,我甚至希望使用bpf_trace_print输出用户数据。
我认为这需要跟踪open()
(或openat()
(系统调用,并将其(特别是fd(与跟踪的read
调用相关联。
/sys/kernel/debug/tracing/events/syscalls/sys_enter_read/format
定义了可以访问的系统调用参数。您可能感兴趣的是char *buf
缓冲区指针,read()
将读取的字节放在这里。
但是,跟踪调用可能在读取任何字节之前发生(需要检查内核源代码(。所以,可能更可靠的方法是使用在read((返回时挂起的原始跟踪点(BPF_PROG_TYPE_RAW_TRACEPOINT
(。