bpf_async_kern
static void bpf_async_cancel_and_free(struct bpf_async_kern *async);
static int __bpf_async_init(struct bpf_async_kern *async, struct bpf_map *map, u64 flags,
BPF_CALL_3(bpf_timer_init, struct bpf_async_kern *, timer, struct bpf_map *, map,
BUILD_BUG_ON(sizeof(struct bpf_async_kern) > sizeof(struct bpf_timer));
BUILD_BUG_ON(__alignof__(struct bpf_async_kern) != __alignof__(struct bpf_timer));
static int __bpf_async_set_callback(struct bpf_async_kern *async, void *callback_fn,
BPF_CALL_3(bpf_timer_set_callback, struct bpf_async_kern *, timer, void *, callback_fn,
BPF_CALL_3(bpf_timer_start, struct bpf_async_kern *, async, u64, nsecs, u64, flags)
BPF_CALL_1(bpf_timer_cancel, struct bpf_async_kern *, async)
static void bpf_async_cancel_and_free(struct bpf_async_kern *async)
struct bpf_async_kern *async = (struct bpf_async_kern *)wq;
BUILD_BUG_ON(sizeof(struct bpf_async_kern) > sizeof(struct bpf_wq));
BUILD_BUG_ON(__alignof__(struct bpf_async_kern) != __alignof__(struct bpf_wq));
struct bpf_async_kern *async = (struct bpf_async_kern *)wq;
struct bpf_async_kern *async = (struct bpf_async_kern *)wq;
struct bpf_async_kern *async = (void *)timer;