STRUCT PCI_EPF_HEADER(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct pci_epf_header(9) β€” the Kernel API Manual, but make it make sense

okay so bestie, this is the manpage for struct pci_epf_header(9) β€” it literally represents the standard configuration header. That's the whole vibe. It's the glow-up config block that tells everyone who your PCI endpoint function is and what it does πŸ’…


✨ SYNOPSIS ✨

here's the whole struct, copy it exactly, no autocomplete crimes:

struct pci_epf_header {
    u16 vendorid;
    u16 deviceid;
    u8 revid;
    u8 progif_code;
    u8 subclass_code;
    u8 baseclass_code;
    u8 cache_line_size;
    u16 subsys_vendor_id;
    u16 subsys_id;
    enum pci_interrupt_pin interrupt_pin;
 };

πŸŽ€ Members πŸŽ€

bestie, go member by member with me, this is the whole syllabus:

  • vendorid β€” identifies the device manufacturer 🏭 like whose house is this
  • deviceid β€” identifies a particular device πŸ‘‘ the specific main character
  • revid β€” specifies a device-specific revision identifier πŸ”„ the "v2 actually fixed it" energy
  • progif_code β€” identifies a specific register-level programming interface 🧚 very specific, very demure
  • subclass_code β€” identifies more specifically the function of the device πŸ” zooming in on the job description
  • baseclass_code β€” broadly classifies the type of function the device performs 🌈 the big-picture category
  • cache_line_size β€” specifies the system cacheline size in units of DWORDs πŸ“ yes, in units of DWORDs, that's the unit, don't @ me
  • subsys_side β€” wait no 😭 it's subsys_vendor_id β€” vendor of the add-in card or subsystem πŸ’³ the card's own plug
  • subsys_id β€” ID specific to vendor πŸ“ pairs with the one above, they're giving duo
  • interrupt_pin β€” interrupt pin the device (or device function) uses ⚑ which pin is doing the knocking
ngl the field names are load-bearing β€” copy them exactly, character for character, or the vibe check fails 🫢

πŸ”₯ SEE ALSO πŸ”₯

all my fave linked structs, in one place, iykyk:

  • Kernel file ./include/linux/pci-epf.h
  • struct pci_epf_ops(9)
  • struct pci_epc_event_ops(9)
  • struct pci_epf_driver(9)
  • struct pci_epf_bar_submap(9)
  • struct pci_epf_bar(9)
  • struct pci_epf_doorbell_msg(9)
  • struct pci_epf(9)
  • struct pci_epf_msix_tbl(9)

okay that's the whole page, no cap, every member accounted for πŸ’€πŸ’… and this iconic little drop comes from ./include/linux, dated October 2026, shipping under the Kernel API Manual banner β€” slay, periodt, go read the source πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from