ssam_controller_lock(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… ssam_controller_lock β€” Kernel API Manual, bestie edition

okay so you found your way into the ssam_controller_lock(9) page, welcome, this one's short and sweet and it's literally about grabbing a lock. main character energy for a mutex, honestly. ✨


🌸 NAME

ssam_controller_lock β€” Acquire the main controller lock. that's it. that's the whole job. she locks. πŸ’…


πŸŽ€ SYNOPSIS

void ssam_controller_lock (struct ssam_controller *c );

no return value, she just does the thing. iconic.


🫢 ARGUMENTS

  • c β€” the controller you're locking. like, that one. the controller in question. give her a lock. πŸ”’

✨ DESCRIPTION

okay bestie listen up, this lock has to be held for any state transitions. and when I say any, I mean it β€” including the transition to suspend/resume states, and also during shutdown. no skipping, no "just this once", fr fr.

if you want the whole lore drop on how controller locking works around here, go read ssam_controller_statelock, it has the details.

and when you're done holding it? obviously you let go. the corresponding unlock function is ssam_controller_unlock. that's the yin to this yang, the un-grab to this grab. πŸ¦‹

no cap: hold the lock, do your state transition, release the lock. the way that this is just basic lock hygiene. we love to see it. πŸ’–

πŸ‘‘ SEE ALSO

the friend group is huge, ngl, here's the entire roster so nobody feels left out:

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_statelock(9),
ssam_controller_stateunlock(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)

like I said. huge friend group. every single one of them is invited to the group chat. 🧚


<div align="center">β€” πŸ“ β€”</div>

okay that's the whole page, go forth and lock responsibly πŸ’œ

this little number came from ./drivers/platform/surface/agg... and it's dated October 2026 β€” yeah, from the future, we stay ahead. mwah πŸ’‹

πŸ“¦ where this page comes from