clk_rate_exclusive_put(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… clk_rate_exclusive_put(9) β€” from the Kernel API Manual, bestie ✨

okay so like… this page lives in the Kernel API Manual, it's called clk_rate_exclusive_put(9), and honestly? it's the chill "we're done here" moment of the clock-rate-exclusivity saga πŸŽ€


🌸 NAME 🌸

clk_rate_exclusive_put β€” the function where you release the exclusivity you had over the rate control of a producer πŸ¦‹


✨ SYNOPSIS ✨

void clk_rate_exclusive_put (struct clk *clk );

literally just that. one clock in, nothing out (it's void, she doesn't return anything, she just leaves πŸ’…).


πŸŽ€ ARGUMENTS πŸŽ€

  • clk β€” the clock source. yep, that's the whole parameter list. the clock you're breaking up with. πŸ”₯

πŸ‘‘ DESCRIPTION πŸ‘‘

okay so the whole vibe: this function lets drivers release the exclusivity that they previously grabbed from clk_rate_exclusive_get. it's giving "handing the aux cord back" 🎧

The caller must balance the number of clk_rate_exclusive_get and clk_rate_exclusive_put calls. like, one get = one put, no cap. if you get five times you put five times, periodt. don't leave the count lopsided or it's gonna be a mess 😭

🚨 also β€” must not be called from within atomic context. fr fr, do not do that. not the move.

πŸ¦‹ SEE ALSO πŸ¦‹

the whole friend group, ok. the kernel file ./include/linux/clk.h plus notifier callback types(9), struct clk_notifier(9), struct clk_notifier_data(9), struct clk_bulk_data(9), clk_notifier_register(9), clk_notifier_unregister(9), devm_clk_notifier_register(9), clk_get_accuracy(9), clk_set_phase(9), clk_get_phase(9), clk_set_duty_cycle(9), clk_get_scaled_duty_cycle(9), clk_is_match(9), clk_rate_exclusive_get(9), devm_clk_rate_exclusive_get(9), clk_save_context(9), clk_restore_context(9), clk_prepare(9), clk_unprepare(9), clk_is_enabled_when_prepared(9), clk_get(9), clk_bulk_get(9), clk_bulk_get_all(9), clk_bulk_get_optional(9), devm_clk_bulk_get(9), devm_clk_bulk_get_optional(9), devm_clk_bulk_get_enable(9), devm_clk_bulk_get_optional_enable(9), devm_clk_bulk_get_all(9), devm_clk_bulk_get_all_enabled(9), devm_clk_get(9), devm_clk_get_prepared(9), devm_clk_get_enabled(9), devm_clk_get_optional(9), devm_clk_get_optional_prepared(9), devm_clk_get_optional_enabled(9), devm_clk_get_optional_enabled_with_rate(9), devm_get_clk_from_child(9), clk_enable(9), clk_bulk_enable(9), clk_disable(9), clk_bulk_disable(9), clk_get_rate(9), clk_put(9), clk_bulk_put(9), clk_bulk_put_all(9), devm_clk_put(9), clk_round_rate(9), clk_set_rate(9), clk_set_rate_exclusive(9), clk_has_parent(9), clk_set_rate_range(9), clk_set_min_rate(9), clk_set_max_rate(9), clk_set_parent(9), clk_get_parent(9), clk_get_sys(9), clk_drop_range(9), clk_get_optional(9) 🌈

like yeah. that's a lot of friends. iykyk πŸ’œ


mwah πŸ’‹ this lil page comes to you from the ./include/linux corner of the source tree, dated October 2026 β€” stay balanced out there bestie, and remember: every get deserves its put πŸ«ΆπŸ’–

πŸ“¦ where this page comes from