STRUCT TMIGR_WALK(9)
β¨ struct tmigr_walk(9) β¨
okay so bestie, welcome to the struct tmigr_walk page β it's literally just "data required for walking the hierarchy." that's the whole vibe. it's giving very much kernel internals realness, and we're gonna go through it together, no cap. π
πΈ SYNOPSIS πΈ
struct tmigr_walk {
u64 nextexp;
u64 firstexp;
struct tmigr_event *evt;
u8 childmask;
bool remote;
unsigned long basej;
u64 now;
bool check;
};
π Members π
nextexpβ this is the next CPU event expiry info, handed into the timer migration code by the timer code itself (you know, viaget_next_timer_interrupt). it's like the little heads-up note passed between friends. π«Άfirstexpβ okay this one has lore. it contains the first event expiry info for when the hierarchy is completely idle. when the CPU itself was the last one going idle, this info makes sure the CPU will be back in time. and when you're using this value in the remote expiry case,firstexpis stored in the per-CPUtmigr_cpustruct of the CPU that expires remote timers. it only gets updated in the top level group. and now for the cautionary tale: be aware, there could totally occur a new top level of the hierarchy between the 'top level call' intmigr_update_eventsand the check for the parent group inwalk_groups. so thenfirstexpmight contain a value!= KTIME_MAXeven if it was not the final top level. but bestie, this is not a problem β the worst outcome is just a CPU that might wake up a little early. lowkey iconic, highkey harmless. πevtβ pointer totmigr_eventwhich needs to be queued (of an idle child group). it's the event that's waiting for its moment. β¨childmaskβ the groupmask of the child group. very demure, very groupmask. πremoteβ this one gets set when the new timer path is executed intmigr_handle_remote_cpu. so if it's true, you know we're in remote mode. periodt. π₯basejβ timer base in jiffies. classic. β±οΈnowβ timer base monotonic. the current moment, but make it monotonic. π°οΈcheckβ this is set if there's a need to handle remote timers; required intmigr_requires_handle_remoteonly. so it's the little "do we need to do the thing?" flag. yep, that's the whole job. β
π SEE ALSO π
- Kernel file
./kernel/time/timer_migration.c tmigr_cpu_activate(9)tmigr_handle_remote(9)tmigr_requires_handle_remote(9)tmigr_cpu_new_timer(9)tmigr_cpu_deactivate(9)tmigr_quick_check(9)tmigr_isolated_exclude_cpumask(9)
go read those next, bestie β they're all part of the same iconic timer migration universe. π¦
π this page brought to you by the kernel peeps at ./kernel/time, published October 2026, and titled struct tmigr_walk(9) β stay slay, stay hydrated, and may your timers always be on time! π«Άβ¨
π¦ 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