On Thu, May 20, 2021 at 11:55 AM Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> wrote: > > From: Alexei Starovoitov <ast@xxxxxxxxxx> > > Introduce 'struct bpf_timer' that can be embedded in most BPF map types > and helpers to operate on it: > long bpf_timer_init(struct bpf_timer *timer, void *callback, int flags) > long bpf_timer_mod(struct bpf_timer *timer, u64 msecs) > long bpf_timer_del(struct bpf_timer *timer) > > Signed-off-by: Alexei Starovoitov <ast@xxxxxxxxxx> > --- > This is work in progress, but gives an idea on how API will look. Forgot to mention the todo list: - restrict to cap_bpf - kfree bpf_timer_list - verifier btf checks - restrict to array, hash, lru, lpm. per-cpu maps cannot be supported. - safe interaction with lookup/update/delete operations and iterator - relax the 'first field only' requirement to allow bpf_timerr in global data. kinda without a map. - check prog_rdonly, frozen, mmaped flags - decide on a return value from the timer callback - more tests