STRUCT TMIGR_WALK(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ 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, via get_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, firstexp is stored in the per-CPU tmigr_cpu struct 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' in tmigr_update_events and the check for the parent group in walk_groups. so then firstexp might contain a value != KTIME_MAX even 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 to tmigr_event which 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 in tmigr_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 in tmigr_requires_handle_remote only. so it's the little "do we need to do the thing?" flag. yep, that's the whole job. βœ…

πŸ‘‘ SEE ALSO πŸ‘‘

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