STRUCT CLKDM_OPS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct clkdm_ops(9) ✨

okay so this is from the Kernel API Manual, and bestie, it's literally the blueprint for arch-specific function implementations β€” like, the plug-in pack for clockdomains, iykyk πŸ’…


🌸 NAME 🌸

struct clkdm_ops β€” Arch specific function implementations πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

the whole squad, defined like this, no cap:

struct clkdm_ops {
    int (*clkdm_add_wkdep)(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
    int (*clkdm_del_wkdep)(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
    int (*clkdm_read_wkdep)(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
    int (*clkdm_clear_all_wkdeps)(struct clockdomain *clkdm);
    int (*clkdm_add_sleepdep)(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
    int (*clkdm_del_sleepdep)(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
    int (*clkdm_read_sleepdep)(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
    int (*clkdm_clear_all_sleepdeps)(struct clockdomain *clkdm);
    int (*clkdm_sleep)(struct clockdomain *clkdm);
    int (*clkdm_wakeup)(struct clockdomain *clkdm);
    void (*clkdm_allow_idle)(struct clockdomain *clkdm);
    void (*clkdm_deny_idle)(struct clockdomain *clkdm);
    int (*clkdm_clk_enable)(struct clockdomain *clkdm);
    int (*clkdm_clk_disable)(struct clockdomain *clkdm);
    int (*clkdm_save_context)(struct clockdomain *clkdm);
    int (*clkdm_restore_context)(struct clockdomain *clkdm);
 };

Members 🫢

  • clkdm_add_wkdep β€” adds a wakeup dependency between clk domains ⭐ lowkey the friendliest one here
  • clkdm_del_wkdep β€” deletes a wakeup dependency between clk domains βœ‚οΈ breaking up is hard to do
  • clkdm_read_wkdep β€” reads the wakeup dependency state between clk domains πŸ‘€ just checking in on the vibes
  • clkdm_clear_all_wkdeps β€” removes all wakeup dependencies from the clk domain 🧹 clean slate energy
  • clkdm_add_sleepdep β€” adds a sleep dependency between clk domains 😴 so they nap together, cute
  • clkdm_del_sleepdep β€” deletes a sleep dependency between clk domains πŸ’€ no more shared nap time
  • clkdm_read_sleepdep β€” reads the sleep dependency state between clk domains πŸ”
  • clkdm_clear_all_sleepdeps β€” removes all sleep dependencies from the clk domain 🫧 whole nap schedule wiped
  • clkdm_sleep β€” forces a clockdomain to sleep πŸ›Œ like, forced, not "whenever you feel like it"
  • clkdm_wakeup β€” forces a clockdomain to wakeup ⏰ rise and grind
  • clkdm_allow_idle β€” enables hw supervised idle transitions for the clock domain πŸ”₯ hands the napping over to the hardware
  • clkdm_deny_idle β€” disables hw supervised idle transitions for the clock domain πŸ™…β€β™€οΈ hardware, you're not the boss of this nap
  • clkdm_clk_enable β€” puts the clkdm in the right state for a clock enable βœ…
  • clkdm_clk_disable β€” puts the clkdm in the right state for a clock disable ❌
  • clkdm_save_context β€” saves the current clkdm context πŸ’Ύ screenshot the vibes
  • clkdm_restore_context β€” restores the clkdm context πŸ“Έ camera roll, restored
ngl, every single one of these returns int except clkdm_allow_idle and clkdm_deny_idle, which return void. okay that's not in the page as written, but it is right there in the synopsis so go look at it πŸ’€ anyway.

πŸ‘‘ SEE ALSO πŸ‘‘

go read these next, bestie, they're in Kernel file ./arch/arm/mach-omap2/clockdomain.h:

  • struct clkdm_autodep(9)
  • struct clkdm_dep(9)
  • struct clockdomain(9)

that's the whole page! πŸ“ fr fr, it's giving "tiny struct, big responsibilities." mwah πŸ’–

bye bestie!! βœ¨πŸ¦‹πŸ’œ


from ./arch/arm/mach-omap2 Β· October 2026 Β· struct clkdm_ops(9) β€” drink some water, then go set those wakeup deps πŸŽ€

πŸ“¦ where this page comes from