STRUCT CLKDM_OPS(9)
β¨ 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 hereclkdm_del_wkdepβ deletes a wakeup dependency between clk domains βοΈ breaking up is hard to doclkdm_read_wkdepβ reads the wakeup dependency state between clk domains π just checking in on the vibesclkdm_clear_all_wkdepsβ removes all wakeup dependencies from the clk domain π§Ή clean slate energyclkdm_add_sleepdepβ adds a sleep dependency between clk domains π΄ so they nap together, cuteclkdm_del_sleepdepβ deletes a sleep dependency between clk domains π€ no more shared nap timeclkdm_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 wipedclkdm_sleepβ forces a clockdomain to sleep π like, forced, not "whenever you feel like it"clkdm_wakeupβ forces a clockdomain to wakeup β° rise and grindclkdm_allow_idleβ enables hw supervised idle transitions for the clock domain π₯ hands the napping over to the hardwareclkdm_deny_idleβ disables hw supervised idle transitions for the clock domain π ββοΈ hardware, you're not the boss of this napclkdm_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 vibesclkdm_restore_contextβ restores the clkdm context πΈ camera roll, restored
ngl, every single one of these returnsintexceptclkdm_allow_idleandclkdm_deny_idle, which returnvoid. 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
- 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