以下面命令为例:
echo "((sig >= 10 && sig < 15) || sig == 17) && comm != bash" > /sys/kernel/debug/tracing/events/signal/signal_generate/filter
首先,把参数“((sig >= 10 && sig < 15) || sig == 17) && comm != bash”按运算符、运算量为单位,拆分到filter_parse_state.postfix 链表,按优先级排序,如下:
sig 10 >= sig 15 < && sig 17 == || comm bash != &&
然后,以运算式为单元放到event_filter.preds[]数组中
数组中每个元素filter_pred结构体内容如下:
对应运算式:sig>=10 sig<15 && sig==17 || comm!=bash &&
index: 0 1 2 3 4 5 6 自己的编号
parent: 2 2 4 4 6 6 0 父节点
left: ffff ffff 0 ffff 2 ffff 4 左子节点
right: 0 0 1 0 3 0 5 右子节点
将节点以树的形式展开如下:
6
4 5
2 3
0 1