1*aa963bcbSAndrii Nakryiko // SPDX-License-Identifier: GPL-2.0 2*aa963bcbSAndrii Nakryiko /* Copyright (c) 2022 Facebook */ 3*aa963bcbSAndrii Nakryiko 4*aa963bcbSAndrii Nakryiko #include "vmlinux.h" 5*aa963bcbSAndrii Nakryiko #include <bpf/bpf_helpers.h> 6*aa963bcbSAndrii Nakryiko #include <bpf/bpf_tracing.h> 7*aa963bcbSAndrii Nakryiko 8*aa963bcbSAndrii Nakryiko const volatile int my_pid; 9*aa963bcbSAndrii Nakryiko 10*aa963bcbSAndrii Nakryiko bool abc1_called; 11*aa963bcbSAndrii Nakryiko bool abc2_called; 12*aa963bcbSAndrii Nakryiko bool custom1_called; 13*aa963bcbSAndrii Nakryiko bool custom2_called; 14*aa963bcbSAndrii Nakryiko bool kprobe1_called; 15*aa963bcbSAndrii Nakryiko bool xyz_called; 16*aa963bcbSAndrii Nakryiko 17*aa963bcbSAndrii Nakryiko SEC("abc") abc1(void * ctx)18*aa963bcbSAndrii Nakryikoint abc1(void *ctx) 19*aa963bcbSAndrii Nakryiko { 20*aa963bcbSAndrii Nakryiko abc1_called = true; 21*aa963bcbSAndrii Nakryiko return 0; 22*aa963bcbSAndrii Nakryiko } 23*aa963bcbSAndrii Nakryiko 24*aa963bcbSAndrii Nakryiko SEC("abc/whatever") abc2(void * ctx)25*aa963bcbSAndrii Nakryikoint abc2(void *ctx) 26*aa963bcbSAndrii Nakryiko { 27*aa963bcbSAndrii Nakryiko abc2_called = true; 28*aa963bcbSAndrii Nakryiko return 0; 29*aa963bcbSAndrii Nakryiko } 30*aa963bcbSAndrii Nakryiko 31*aa963bcbSAndrii Nakryiko SEC("custom") custom1(void * ctx)32*aa963bcbSAndrii Nakryikoint custom1(void *ctx) 33*aa963bcbSAndrii Nakryiko { 34*aa963bcbSAndrii Nakryiko custom1_called = true; 35*aa963bcbSAndrii Nakryiko return 0; 36*aa963bcbSAndrii Nakryiko } 37*aa963bcbSAndrii Nakryiko 38*aa963bcbSAndrii Nakryiko SEC("custom/something") custom2(void * ctx)39*aa963bcbSAndrii Nakryikoint custom2(void *ctx) 40*aa963bcbSAndrii Nakryiko { 41*aa963bcbSAndrii Nakryiko custom2_called = true; 42*aa963bcbSAndrii Nakryiko return 0; 43*aa963bcbSAndrii Nakryiko } 44*aa963bcbSAndrii Nakryiko 45*aa963bcbSAndrii Nakryiko SEC("kprobe") kprobe1(void * ctx)46*aa963bcbSAndrii Nakryikoint kprobe1(void *ctx) 47*aa963bcbSAndrii Nakryiko { 48*aa963bcbSAndrii Nakryiko kprobe1_called = true; 49*aa963bcbSAndrii Nakryiko return 0; 50*aa963bcbSAndrii Nakryiko } 51*aa963bcbSAndrii Nakryiko 52*aa963bcbSAndrii Nakryiko SEC("xyz/blah") xyz(void * ctx)53*aa963bcbSAndrii Nakryikoint xyz(void *ctx) 54*aa963bcbSAndrii Nakryiko { 55*aa963bcbSAndrii Nakryiko int whatever; 56*aa963bcbSAndrii Nakryiko 57*aa963bcbSAndrii Nakryiko /* use sleepable helper, custom handler should set sleepable flag */ 58*aa963bcbSAndrii Nakryiko bpf_copy_from_user(&whatever, sizeof(whatever), NULL); 59*aa963bcbSAndrii Nakryiko xyz_called = true; 60*aa963bcbSAndrii Nakryiko return 0; 61*aa963bcbSAndrii Nakryiko } 62*aa963bcbSAndrii Nakryiko 63*aa963bcbSAndrii Nakryiko char _license[] SEC("license") = "GPL"; 64