msi_domain_for_each_desc(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… msi_domain_for_each_desc πŸ’…

Okay so bestie, welcome to the msi_domain_for_each_desc(9) page β€” it's a kernel API manual moment, and it's lowkey iconic. This is the function that lets you iterate the MSI descriptors in a specific domain, and the way that it just... walks them? Obsessed. πŸ¦‹


✨ NAME ✨

msi_domain_for_each_desc β€” iterate the MSI descriptors in a specific domain πŸŽ€


🌸 SYNOPSIS 🌸

msi_domain_for_each_desc (desc , dev , domid , filter );

πŸ’– ARGUMENTS πŸ’–

  • desc β€” a struct msi_desc pointer, and it's your iterator, your little main character doing the walking πŸšΆβ€β™€οΈβœ¨
  • dev β€” a struct device pointer, i.e. the device you're iterating over, no cap
  • domid β€” the id of the interrupt domain that should be walked. Like, this is the domain we're strolling through πŸ‘‘
  • filter β€” the filter for descriptor selection, so you only get the descriptors you actually want 🎯

🌈 NOTES 🌈

  • 🚨 The loop must be protected with a msi_lock_descs/msi_unlock_descs pair. Like, genuinely must. Do not skip this, fr fr.
  • βœ… It is safe to remove a retrieved MSI descriptor in the loop. Slay, that's convenient.
  • πŸ“ The kernel file lives at ./include/linux/msi.h β€” iykyk.

⭐ SEE ALSO ⭐

Kernel file ./include/linux/msi.h plus all these besties: struct msi_msg(9), struct pci_msi_desc(9), union msi_domain_cookie(9), struct msi_desc_data(9), struct msi_desc(9), struct msi_dev_domain(9), msi_first_desc(9), msi_for_each_desc(9), msi_msg_set_addr(9), msi_insert_msi_desc(9), msi_free_msi_descs_range(9), msi_free_msi_descs(9), struct msi_domain_ops(9), struct msi_domain_info(9), struct msi_domain_template(9), struct msi_parent_ops(9) πŸ’œ


That's the whole page, gorgeous β€” go forth and iterate responsibly 🫢

This cutie came out of ./include/linux with the October 2026 date stamp, bestie β€” mwah, mwah, see you in the next manpage πŸ’…πŸ’–

πŸ“¦ where this page comes from