ssam_controller_statelock(9)
π ssam_controller_statelock(9) π
okay so this is a page from the Kernel API Manual and bestie, it's literally about holding a controller still so it doesn't get any ideas about changing state on you. iconic behavior honestly.
β¨ NAME β¨
ssam_controller_statelock β lock the controller against state transitions.
πΈ SYNOPSIS πΈ
void ssam_controller_statelock (struct ssam_controller *c );
π¦ ARGUMENTS π¦
cβ the controller you're locking. that's the one, babe π
π DESCRIPTION π
okay so the whole vibe here: you lock the controller against state transitions. holding this lock is basically a pinky promise that the controller will not transition between states β like, if it's in the state "started" when you acquire this lock, it will remain in that state at least until you release it. no cap. π€
and here's the slay part: multiple clients may concurrently hold this lock. yes, you read that right, the more the merrier π
in other words, the statelock functions represent the read-lock part of a r/w-semaphore. so anything that actually causes a state transition has to be executed while holding the write-part of this r/w-semaphore β see ssam_controller_lock and ssam_controller_unlock for that part, iykyk.
heads up bestie: this is the read side only. if you're out here changing states without the write lock, that's not the move π
for the corresponding unlock function, go see ssam_controller_stateunlock. they're a matching set, fr fr π«Ά
π SEE ALSO π
kernel file: ./drivers/platform/surface/aggregator/controller.c
ssh_seq_reset(9), ssh_seq_next(9), ssh_rqid_reset(9), ssh_rqid_next(9), ssam_event_matches_notifier(9), ssam_nfblk_call_chain(9), ssam_nfblk_insert(9), ssam_nfblk_find(9), ssam_nfblk_remove(9), ssam_nf_head_init(9), ssam_nf_head_destroy(9), struct ssam_nf_refcount_key(9), struct ssam_nf_refcount_entry(9), ssam_nf_refcount_inc(9), ssam_nf_refcount_dec(9), ssam_nf_refcount_dec_free(9), ssam_nf_refcount_empty(9), ssam_nf_call(9), ssam_nf_init(9), ssam_nf_destroy(9), ssam_event_item_cache_init(9), ssam_event_item_cache_destroy(9), ssam_event_item_free(9), ssam_event_item_alloc(9), ssam_event_queue_push(9), ssam_event_queue_pop(9), ssam_event_queue_is_empty(9), ssam_cplt_get_event_queue(9), ssam_cplt_submit(9), ssam_cplt_submit_event(9), ssam_cplt_flush(9), ssam_event_queue_init(9), ssam_cplt_init(9), ssam_cplt_destroy(9), ssam_controller_device(9), ssam_controller_get(9), ssam_controller_put(9), ssam_controller_stateunlock(9), ssam_controller_lock(9), ssam_controller_caps_load_from_acpi(9), ssam_controller_caps_load_from_of(9), ssam_controller_caps_load(9), ssam_controller_init(9), ssam_controller_start(9), ssam_controller_shutdown(9), ssam_controller_destroy(9), ssam_controller_suspend(9), ssam_controller_resume(9), ssam_request_write_data(9), ssam_request_sync_alloc(9), ssam_request_sync_free(9), ssam_request_sync_init(9), ssam_request_sync_submit(9), ssam_request_do_sync(9), ssam_request_do_sync_with_buffer(9), struct ssh_notification_params(9), ssam_ssh_event_enable(9), ssam_ssh_event_disable(9), ssam_get_firmware_version(9), ssam_ctrl_notif_display_off(9), ssam_ctrl_notif_display_on(9), ssam_ctrl_notif_d0_exit(9), ssam_ctrl_notif_d0_entry(9), ssam_nf_refcount_enable(9), ssam_nf_refcount_disable_free(9), ssam_notifier_register(9), __ssam_notifier_unregister(9), ssam_controller_event_enable(9), ssam_controller_event_disable(9), ssam_notifier_disable_registered(9), ssam_notifier_restore_registered(9), ssam_notifier_is_empty(9), ssam_notifier_unregister_all(9), ssam_irq_setup(9), ssam_irq_free(9), ssam_irq_arm_for_wakeup(9), ssam_irq_disarm_wakeup(9)
okay that's the whole page, bestie, go forth and lock responsibly πβ¨
π this gem came from ./drivers/platform/surface/agg... and it's dated October 2026 β love that for us, future energy fr fr β π
π¦ 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