bpf_task_wo...edule_resume(9)
π bpf_task_work_schedule_resume(9) β from the Kernel API Manual, bestie π«Ά
okay so picture this: you're deep in BPF land and you need a callback to run later, on a specific task, in TWA_RESUME mode. that's literally this function. this page lives in the Kernel API Manual and honestly it's giving "small page, big job" energy β¨
πΈ NAME πΈ
bpf_task_work_schedule_resume β schedules a BPF callback using task_work_add with TWA_RESUME mode. yes, that's the whole vibe: you hand it a task, it hooks your callback up to run when that task resumes. iconic behavior ngl π
β¨ SYNOPSIS β¨
__bpf_kfunc int bpf_task_work_schedule_resume (struct task_struct *task
, struct bpf_task_work *tw , void *map__const_map ,
bpf_task_work_callback_t callback , struct bpf_prog_aux *aux );
that's the whole signature, no cap. five args, one int coming back at you π
π― ARGUMENTS π―
every single one of these matters, so let's go one by one, fr fr:
taskβ theTask structfor which the callback should be scheduled. like, who are we doing this for? this one. main character energy πtwβ a pointer tostruct bpf_task_workliving inside a BPF map value. it's for internal bookkeeping, so it's not the fun part but it IS load-bearing πmap__const_mapβ thebpf_mapthat embedsstruct bpf_task_workin its values. it's the home address of yourtw, basically πcallbackβ pointer to the BPF subprogram to call. the actual moment, the payoff, the slay π₯auxβ pointer tobpf_prog_auxof the caller BPF program. good news: this one is implicitly set by the verifier, so you don't have to touch it yourself bestie β¨
π RETURN π
- returns
0if the task work has been scheduled successfully π - returns a negative error code otherwise π
that's it. zero = slay, negative = try again (or don't, but read the error code at least) π
lowkey important: "negative error code" is the whole failure condition here. don't go assuming it's fine just because it didn't blow up β check the return value, bestie π«Ά
π SEE ALSO π
okay so this is the long part and I'm not skipping a single one, because every one of these is a whole little world:
kernel file ./kernel/bpf/helpers.c, and these absolute icons:
bpf_obj_new(9), bpf_percpu_obj_new(9), bpf_obj_drop(9), bpf_percpu_obj_drop(9), bpf_refcount_acquire(9), bpf_list_push_front(9), bpf_list_push_back(9), bpf_rbtree_add(9), bpf_task_acquire(9), bpf_task_release(9), bpf_cgroup_acquire(9), bpf_cgroup_release(9), bpf_cgroup_ancestor(9), bpf_cgroup_from_id(9), bpf_task_under_cgroup(9), bpf_task_get_cgroup1(9), bpf_task_from_pid(9), bpf_task_from_vpid(9), bpf_dynptr_slice(9), bpf_dynptr_slice_rdwr(9), bpf_dynptr_copy(9), bpf_dynptr_memset(9), bpf_iter_bits_new(9), bpf_iter_bits_next(9), bpf_iter_bits_destroy(9), bpf_copy_from_user_str(9), bpf_copy_from_user_task_str(9), bpf_strcmp(9), bpf_strcasecmp(9), bpf_strnchr(9), bpf_strchr(9), bpf_strchrnul(9), bpf_strrchr(9), bpf_strnlen(9), bpf_strlen(9), bpf_strspn(9), bpf_strcspn(9), bpf_strstr(9), bpf_strcasestr(9), bpf_strnstr(9), bpf_strncasestr(9), bpf_lookup_user_key(9), bpf_lookup_system_key(9), bpf_key_put(9), bpf_verify_pkcs7_signature(9), bpf_task_work_schedule_signal(9), bpf_timer_cancel_async(9)
that's the whole friend group, go say hi π¦
and that's the page!! this one shipped from ./kernel/bpf and it's dated October 2026 β so like, remember the date, remember the path, and go schedule some callbacks responsibly. mwah πβ¨π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms