ssam_controller_shutdown(9)
π NAME π
ssam_controller_shutdown β shut down the controller. Okay bestie, this is the ssam_controller_shutdown(9) page from the Kernel API Manual, and itβs lowkey a very important cleanup moment β¨.
β¨ SYNOPSIS β¨
void ssam_controller_shutdown (struct ssam_controller *ctrl );
π ARGUMENTS π
ctrlβ the controller. like, the exact controller youβre shutting down π .
πΈ DESCRIPTION πΈ
So this function shuts down the controller by flushing all pending requests and stopping the transmitter and receiver threads. boom, cleanup era π₯.
All requests submitted after this call will fail with -ESHUTDOWN. no cap, thatβs the shutdown boundary.
While it is discouraged to do so, this function is safe to use in parallel with ongoing request submission. still, discouraged means discouraged, bestie π.
In the course of this shutdown procedure, all currently registered notifiers will be unregistered. It is, however, strongly recommended to not rely on this behavior, and instead the party registering the notifier should unregister it before the controller gets shut down, e.g. via the SSAM bus which guarantees client devices to be removed before a shutdown. healthy boundaries, we love to see it π«Ά.
Note that events may still be pending after this call, but, due to the notifiers being unregistered, these events will be dropped when the controller is subsequently destroyed via ssam_controller_destroy. so donβt expect those little guys to show up later π.
π¨ Lock check, bestie: this function must be called with the main controller lock held (i.e. by calling ssam_controller_lock). not optional, not cute to skip, periodt π.
π SEE ALSO π
The page also points at the kernel file and a whole group chat of related symbols β all names exactly as written, iykyk π:
- 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_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_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 bye bestie π β this was ssam_controller_shutdown(9) from the Kernel API Manual; its source/version footer said ./drivers/platform/surface/agg... and it was dated October 2026. mwah π«Ά
π¦ 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