github.com/fafucoder/cilium@v1.6.11/test/bpf/bpf-event-test.c (about)

     1  #include "event.h"
     2  
     3  #ifndef __NR_CPUS__
     4  #define __NR_CPUS__ 1
     5  #endif
     6  
     7  struct bpf_elf_map __section_maps perf_test_events = {
     8  	.type           = BPF_MAP_TYPE_PERF_EVENT_ARRAY,
     9  	.size_key       = sizeof(int),
    10  	.size_value     = sizeof(int),
    11  	.pinning        = PIN_GLOBAL_NS,
    12  	.max_elem       = __NR_CPUS__,
    13  };
    14  
    15  __section_cls_entry
    16  int cls_entry(struct __sk_buff *skb)
    17  {
    18  	struct event_msg msg = {0};
    19  
    20  	msg.type = EVENT_TYPE_SAMPLE;
    21  
    22  	skb_load_bytes(skb, 0, &msg.data, sizeof(msg.data));
    23  	skb_event_output(skb, &perf_test_events, BPF_F_CURRENT_CPU,
    24  		     &msg, sizeof(msg));
    25  
    26  	return TC_ACT_OK;
    27  }
    28  
    29  BPF_LICENSE("GPL");