bpf_msleep_interruptible() puts a calling context into an interruptible sleep. This function is expected to be used for testing only (perhaps in conjunction with fault-injection) to simulate various execution delays or timeouts. Signed-off-by: Sergey Senozhatsky <senozhatsky@xxxxxxxxxxxx> --- v2: -- switched to kfunc (Matt) kernel/bpf/helpers.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c index fed53da75025..a7404ab3b0b8 100644 --- a/kernel/bpf/helpers.c +++ b/kernel/bpf/helpers.c @@ -24,6 +24,7 @@ #include <linux/bpf_mem_alloc.h> #include <linux/kasan.h> #include <linux/bpf_verifier.h> +#include <linux/delay.h> #include "../../lib/kstrtox.h" @@ -3283,6 +3284,11 @@ __bpf_kfunc void bpf_local_irq_restore(unsigned long *flags__irq_flag) local_irq_restore(*flags__irq_flag); } +__bpf_kfunc unsigned long bpf_msleep_interruptible(unsigned int msecs) +{ + return msleep_interruptible(msecs); +} + __bpf_kfunc_end_defs(); BTF_KFUNCS_START(generic_btf_ids) @@ -3388,6 +3394,7 @@ BTF_ID_FLAGS(func, bpf_iter_kmem_cache_next, KF_ITER_NEXT | KF_RET_NULL | KF_SLE BTF_ID_FLAGS(func, bpf_iter_kmem_cache_destroy, KF_ITER_DESTROY | KF_SLEEPABLE) BTF_ID_FLAGS(func, bpf_local_irq_save) BTF_ID_FLAGS(func, bpf_local_irq_restore) +BTF_ID_FLAGS(func, bpf_msleep_interruptible, KF_SLEEPABLE) BTF_KFUNCS_END(common_btf_ids) static const struct btf_kfunc_id_set common_kfunc_set = { -- 2.49.0.1101.gccaa498523-goog