47 lines · c
1// SPDX-License-Identifier: GPL-2.02// Copyright (c) 2019 Facebook3#include <linux/bpf.h>4#include <linux/version.h>5#include <bpf/bpf_helpers.h>6 7__u32 sig = 0, pid = 0, status = 0, signal_thread = 0;8 9static __always_inline int bpf_send_signal_test(void *ctx)10{11 int ret;12 13 if (status != 0 || pid == 0)14 return 0;15 16 if ((bpf_get_current_pid_tgid() >> 32) == pid) {17 if (signal_thread)18 ret = bpf_send_signal_thread(sig);19 else20 ret = bpf_send_signal(sig);21 if (ret == 0)22 status = 1;23 }24 25 return 0;26}27 28SEC("tracepoint/syscalls/sys_enter_nanosleep")29int send_signal_tp(void *ctx)30{31 return bpf_send_signal_test(ctx);32}33 34SEC("tracepoint/sched/sched_switch")35int send_signal_tp_sched(void *ctx)36{37 return bpf_send_signal_test(ctx);38}39 40SEC("perf_event")41int send_signal_perf(void *ctx)42{43 return bpf_send_signal_test(ctx);44}45 46char __license[] SEC("license") = "GPL";47