SSAM_DEVICE(9)
π SSAM_DEVICE π
okay bestie, so this whole page is about SSAM_DEVICE, a macro from the kernel API manual (that's the 9 in SSAM_DEVICE(9), iykyk) β and its whole personality is: it initializes a &struct ssam_device_id with the parameters you hand it. that's it, that's the vibe. π
β¨ SYNOPSIS β¨
SSAM_DEVICE (d , cat , tid , iid , fun );
like, you literally just call it with five things and it does its little matchmaking thing. slay.
πΈ ARGUMENTS πΈ
dβ the domain of the device. where it lives, conceptually. πcatβ the target category of the device. it's giving "what kind of thing are we even talking about".tidβ the target ID of the device. πiidβ the instance ID of the device. (there can be several, hence instances, hence iid, periodt.)funβ the sub-function of the device. the little extra flavor on top. π
π DESCRIPTION π
so what it actually does: it initializes a struct ssam_device_id with the parameters you gave it. if you want the full lore on what each of those parameters means, go read struct ssam_device_uid β that's the details girlie. π
now here's the fun part, the part that ate: there are these special little values β
SSAM_SSH_TID_ANYSSAM_SSH_IID_ANYSSAM_SSH_FUN_ANY
β and you can use them to say "bestie, when matching, ignore target ID / instance ID / sub-function respectively". like a wildcard but make it fashion. wildcards for the girlies who can't commit. β¨
also, this macro initializes the match_flags field based on the parameters you pass. so it's not just vibing, it's deciding things about matching. main character energy fr fr. π
π₯ NOTE π₯
read this part, i'm serious, no cap π
dandcatmust be validu8values. like, that's the rule.tid,iid, andfunmust be either validu8values orSSAM_SSH_TID_ANY,SSAM_SSH_IID_ANY, orSSAM_SSH_FUN_ANY, respectively. one or the other, pick a lane π- any other non-
u8values? not allowed. we don't do that here. π«
π¦ SEE ALSO π¦
okay this list is long, but every single one of these is iconic in its own way, so:
- kernel file
./include/linux/surface_aggregator/device.h enum ssam_device_domain(9)enum ssam_virtual_tc(9)struct ssam_device_uid(9)SSAM_VDEV(9)SSAM_SDEV(9)struct ssam_device(9)struct ssam_device_driver(9)is_ssam_device(9)to_ssam_device(9)to_ssam_device_driver(9)ssam_device_mark_hot_removed(9)ssam_device_is_hot_removed(9)ssam_device_get(9)ssam_device_put(9)ssam_device_get_drvdata(9)ssam_device_set_drvdata(9)ssam_device_driver_register(9)module_ssam_device_driver(9)ssam_register_clients(9)ssam_device_register_clients(9)SSAM_DEFINE_SYNC_REQUEST_CL_N(9)SSAM_DEFINE_SYNC_REQUEST_CL_W(9)SSAM_DEFINE_SYNC_REQUEST_CL_R(9)SSAM_DEFINE_SYNC_REQUEST_CL_WR(9)ssam_device_notifier_register(9)ssam_device_notifier_unregister(9)
go read them all, i'll wait π
and that's the page!! this whole glow-up lives at ./include/linux/surface_aggreg... and it's dated October 2026, so jot that down in your notes app bestie π«Ά see you at the next manpage, 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