clk_rate_exclusive_get(9)
Hiii bestie π welcome to the Kernel API Manual page for clk_rate_exclusive_get(9) β yes, the whole manual, and yes we're getting into it.
πΈ NAME πΈ
clk_rate_exclusive_get β get exclusivity over the rate control of a producer π
β¨ SYNOPSIS β¨
int clk_rate_exclusive_get (struct clk *clk );
π ARGUMENTS π
clkβ clock source π°οΈ
π DESCRIPTION π
Okay so picture this: a driver wants to be the only one calling the shots on a clock provider's rate. That's literally what this function is for β¨. It lets drivers get exclusive control over the rate of a provider, and it stops any other consumer from executing β even indirectly β an operation that could alter the provider's rate or cause glitches. No cap.
If exclusivity is claimed more than once on a clock, even by the same driver, the rate effectively gets locked, because exclusivity can't be preempted. So likeβ¦ double-claim and it's locked-locked. Periodt. π
Warning, bestie: clk_rate_exclusive_get must not be called from within atomic context. That's a hard no. π«π
Returns success (0) or a negative errno.
π¦ SEE ALSO π¦
Kernel file ./include/linux/clk.h β and the whole clock-adjacent friend group π:
clk 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)devm_clk_rate_exclusive_get(9)clk_rate_exclusive_put(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)
Mwah π β this page came from the Kernel API Manual, lives at ./include/linux, and is dated October 2026. The page's own name is clk_rate_exclusive_get(9), and yes she ate. πβ¨
π¦ 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