STRUCT UM_TIMETRAVEL_SCHEDSHM(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ struct um_timetravel_schedshm(9) πŸ¦‹

okay bestie, so this is a page from the Kernel API Manual (section 9, kernel API, iykyk) and it's literally all about struct um_timetravel_schedshm β€” the UM time travel shared memory struct πŸ’…


✨ NAME ✨

struct um_timetravel_schedshm β€” the UM time travel shared memory struct, no cap 🫢


🌸 SYNOPSIS 🌸

struct um_timetravel_schedshm {
    union {
      struct {
        __u32 version;
        __u32 len;
        __u64 free_until;
        __u64 current_time;
        __u16 running_id;
        __u16 max_clients;
      };
      char hdr[4096];
    };
    union um_timetravel_schedshm_client clients[];
};

like, look at her. main character struct energy fr fr πŸ”₯


πŸŽ€ Members πŸŽ€

  • {unnamed_union} β€” anonymous. that's it, that's the whole description, she's mysterious πŸ’œ
  • {unnamed_struct} β€” also anonymous. also mysterious. we love a lowkey pair πŸ™ˆ
  • version β€” the current version struct UM_TIMETRAVEL_SCHEDSHM_VERSION. the controller sets this once at init, and clients must check it after mapping. and if they can't handle the version that's indicated? they just work without shared memory. periodt πŸ’…
  • len β€” the length of all the memory, header (hdr) included. clients should, once per connection, first mmap the header and grab the length (len) so they can remap the entire size. why, you ask? because it supports a dynamic struct size β€” letting the number of clients be dynamic based on what the controller supports. iconic flexibility ✨
  • free_until β€” stores the next request to run by any client, so the current client knows how long it can still run. a client needs to at least reload this value immediately after communicating with any other client, because the controller will update this field when a new request is made by any client. clients also must update this value when they insert/update their own request into the shared memory while not running themselves, and the new request is before the current value. πŸ•
  • current_time β€” the current time. can only be set by the client in running state (indicated by running_id), though that client may only run until free_until, so it must remain smaller than free_until. no time crimes allowed bestie 😭
  • running_id β€” the current client in state running. set before a client is notified that it's now running. heads up, bestie, that ordering matters πŸ‘‘
  • max_clients β€” size of the clients array. set once at init by the controller. 🎯
  • hdr β€” header fields. that's the vibe 🌈
  • clients β€” the clients array, see union um_timetravel_schedshm_client for the doc. set only by client. 🫢

🌟 SEE ALSO 🌟

  • Kernel file ./include/uapi/linux/um_timetravel.h struct um_timetravel_msg(9)
  • enum um_timetravel_shared_mem_fds(9)
  • enum um_timetravel_start_ack(9)
  • enum um_timetravel_ops(9)
  • enum um_timetravel_schedshm_cap(9)
  • enum um_timetravel_schedshm_flags(9)
  • Time travel shared memory overview(9)
  • union um_timetravel_schedshm_client(9)

πŸ’– reminder bestie: version must be checked after mapping, and if you can't handle it, work without shared memory. and current_time must stay smaller than free_until. do not test her. πŸ™…β€β™€οΈ

k that's the whole page, you ate that πŸ“ mwah πŸ’‹ β€” this lil writeup lives in ./include/uapi/linux, dated October 2026, and it's struct um_t...vel_schedshm(9) in case you need to cite her later. slay πŸ’…βœ¨

πŸ“¦ where this page comes from