我想知道是否有一个从python用户空间初始化BPF映射的简单方法。对于我的项目,我将为每个进程提供一个可怕的NxN 2d浮点数组。为了简单起见,让我们假设N在进程之间是常数(比如5)。为了实现对这些数据的内核支持,我可以做如下操作:
b = BPF(text = """
typedef struct
{
float transMat[5][5];
} trans_struct;
BPF_HASH(trans_mapping, char[16], trans_struct);
.....
""")
我想知道是否有一种简单的方法可以从python初始化这个映射。比如:
for ele in someDictionary:
#asume someDitionary has mapping (comm -> 5x5 float matrix)
b["trans_mapping"].insert(ele, someDictionary[ele])
我想我困惑的关键是——1)所有映射方法都可供用户使用,2)从python对象到c结构时如何确保类型一致性
基于pchaigno注释的解决方案需要注意的关键是使用c_类型以确保跨环境的类型一致性,并通过索引BPF程序对象来提取表。由于我们能够通过索引获取地图,因此get_table()函数现在被认为已经过时。这种格式提供了从python前端将数据加载到地图中的结构,但并不完全符合我的问题的细节
相关问题 更多 >
编程相关推荐