9、eBPF编程:从系统调用到跨内核移植性

eBPF编程:从系统调用到跨内核移植性

1. eBPF系统调用与数据读取

1.1 系统调用与映射查找

在将映射(map)加载到内核时,会有一组三个系统调用与之对应。当使用 BPF_MAP_GET_NEXT_ID 系统调用时,若没有更多映射可供查找,它将返回 ENOENT ,示例如下:

bpf(BPF_MAP_GET_NEXT_ID, {start_id=133,...}, 12) = -1 ENOENT (No such file or directory)

若找到匹配的映射, bpftool 会持有其文件描述符,以便读取该映射中的元素。

1.2 读取映射元素

bpftool 获取到要读取的映射的文件描述符后,通过以下系统调用序列读取信息:

bpf(BPF_MAP_GET_NEXT_KEY, {map_fd=3, key=NULL, next_key=0xaaaaf7a63960}, 24) = 0
bpf(BPF_MAP_LOOKUP_ELEM, {map_fd=3, key=0xaaaaf7a63960, value=0xaaaaf7a63980, flags=BPF_ANY}, 32) = 0
[{
        "key": 0,
        "value": {
            "message": 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值