Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
tcp_重新传输_skb的kprobe。我不希望tcp_重新传输_skb@tcp_states,而是希望kprobe_napi_时间表_Tcp_Bpf_Ebpf_Kprobe_Bcc Bpf - Fatal编程技术网

tcp_重新传输_skb的kprobe。我不希望tcp_重新传输_skb@tcp_states,而是希望kprobe_napi_时间表

tcp_重新传输_skb的kprobe。我不希望tcp_重新传输_skb@tcp_states,而是希望kprobe_napi_时间表,tcp,bpf,ebpf,kprobe,bcc-bpf,Tcp,Bpf,Ebpf,Kprobe,Bcc Bpf,在《BPF性能工具》一书中,有一个tcp_retransmit_skb的kprobe实现。我想做同样的事情,但不是tcp_retransmit_skb@tcp_states,我想kprobe_napi_schedule并取消枚举napi_STATE*的include/linux/netdevice.h。以下是我对上述内容的实施: 1 #!/usr/local/bin/bpftrace 2 3 #include <linux/netdevice.h> 4 5 kpro

在《BPF性能工具》一书中,有一个tcp_retransmit_skb的kprobe实现。我想做同样的事情,但不是tcp_retransmit_skb@tcp_states,我想kprobe_napi_schedule并取消枚举napi_STATE*的include/linux/netdevice.h。以下是我对上述内容的实施:

 1 #!/usr/local/bin/bpftrace
  2
  3 #include <linux/netdevice.h>
  4
  5 kprobe:__napi_schedule
  6 {
  7         $ns = (struct napi_struct *)arg0;
  8
  9         // Poll is scheduled
 10         @napi[1] = "NAPI_STATE_SCHED";
 11         @napi[2] = "NAPI_STATE_DISABLE";
 12         @napi[3] = "NAPI_STATE_NPSVC";
 13         @napi[4] = "NAPI_STATE_HASHED";
 14         @napi[5] = "NAPI_STATE_NO_BUSY_POLL";
 15
 16
 17         printf("-------------------\n");
 18         printf("\n");
 19         printf("__napi_schedule: %s pid: %d\n", comm, pid);
 20         printf("\n");
 21         $state = $ns->state;
 22         printf("$ns->state: %d\n", $state);
 23         $statestr = @napi[$state];
 24         printf("state is: %s\n", $statestr);
 25         clear(@napi);
 26         printf("--------------------\n");
 27 }

$ns->state
是位数组,所以值17实际上是
(1)你能添加一个示例输出吗?
printf
而不是
显示的状态是…
吗?好的。我已经在上面的代码中添加了输出。你怎么发现它是NAPI_状态| MISSED | NAPI_状态(NO)BUSY(BUSY)POLL?我只给出$ns->状态是17。当你说“走位”时,你的意思是我应该使用移位操作(>)?我在代码中添加了这行“$state=$ns->state啊,很抱歉犯了一个错误。我已经更新了帖子。基本上,17是二进制的10001,映射到上面。
...
__napi_schedule: tmux: server pid: 9003

$ns->state: 17
state is:
--------------------
-------------------

__napi_schedule: tmux: server pid: 9003

$ns->state: 17
state is:
--------------------
-------------------

__napi_schedule: tmux: server pid: 9003

$ns->state: 17
state is:
--------------------
...