我想知道是否有一个易于从 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 结构时,我们如何确保类型一致