In order to adapt to the older kernel, now we split the "attach_probe" testing into multi subtests: manual // manual attach tests for kprobe/uprobe auto // auto-attach tests for kprobe and uprobe kprobe-sleepable // kprobe sleepable test uprobe-lib // uprobe tests for library function by name uprobe-sleepable // uprobe sleepable test uprobe-ref_ctr // uprobe ref_ctr test As sleepable kprobe needs to set BPF_F_SLEEPABLE flag before loading, we need to move it to a stand alone skel file, in case of it is not supported by kernel and make the whole loading fail. Therefore, we can only enable part of the subtests for older kernel. Signed-off-by: Menglong Dong <imagedong@tencent.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Reviewed-by: Biao Jiang <benbjiang@tencent.com> Link: https://lore.kernel.org/bpf/20230306064833.7932-3-imagedong@tencent.com
24 lines
500 B
C
24 lines
500 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
// Copyright (c) 2017 Facebook
|
|
|
|
#include "vmlinux.h"
|
|
#include <bpf/bpf_helpers.h>
|
|
#include <bpf/bpf_tracing.h>
|
|
#include <bpf/bpf_core_read.h>
|
|
#include "bpf_misc.h"
|
|
|
|
int kprobe_res = 0;
|
|
|
|
/**
|
|
* This program will be manually made sleepable on the userspace side
|
|
* and should thus be unattachable.
|
|
*/
|
|
SEC("kprobe/" SYS_PREFIX "sys_nanosleep")
|
|
int handle_kprobe_sleepable(struct pt_regs *ctx)
|
|
{
|
|
kprobe_res = 1;
|
|
return 0;
|
|
}
|
|
|
|
char _license[] SEC("license") = "GPL";
|