STRUCT PCI_EPC(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… NAME

struct pci_epc β€” bestie, this is literally the struct that represents the PCI EPC device ✨ (it's in the Kernel API Manual, iykyk πŸŽ€)


🌸 SYNOPSIS

okay so here's the whole vibe, character for character, no cap:

struct pci_epc {
    struct device                   dev;
    struct list_head                pci_epf;
    struct mutex                    list_lock;
    const struct pci_epc_ops        *ops;
    struct pci_epc_mem              **windows;
    struct pci_epc_mem              *mem;
    unsigned int                    num_windows;
    u8 max_functions;
    u8 *max_vfs;
    struct config_group             *group;
    struct mutex                    lock;
    unsigned long                   function_num_map;
    int domain_nr;
    bool init_complete;
 };

✨ Members ✨

time to meet the cast, every single one of them, main character energy only πŸ‘‘

  • dev β€” the PCI EPC device itself. that's the whole point tbh 🫢
  • pci_epf β€” a list of the endpoint functions that are present in this EPC device. like the guest list fr fr πŸŽ€
  • list_lock β€” a Mutex for protecting the pci_epf list. it's giving bodyguard for the guest list πŸ’…
  • ops β€” function pointers for performing endpoint operations. the actual moves πŸ”₯
  • windows β€” array of address space of the endpoint controller. lowkey the real estate portfolio 🏠✨
  • mem β€” the first window of the endpoint controller, which corresponds to the default address space of the endpoint controller supporting single window. one window girlies, this one's for you πŸ¦‹
  • num_windows β€” number of windows supported by the device. count 'em πŸ‘€
  • max_functions β€” max number of functions that can be configured in this EPC. the cap, literally 🌈
  • max_vfs β€” Array indicating the maximum number of virtual functions that can be associated with each physical function. virtual besties per physical bestie, obsessed 😭
  • group β€” configfs group representing the PCI EPC device. it's a whole group chat πŸŽ€
  • lock β€” mutex to protect pci_epc ops. yes bestie, lock it down πŸ”’
  • function_num_map β€” bitmap to manage physical function number. lil map of who's who πŸ—ΊοΈ
  • domain_nr β€” PCI domain number of the endpoint controller. its address, its identity ⭐
  • init_complete β€” flag to indicate whether the EPC initialization is complete or not. are we done yet or are we done yet πŸ’€

πŸ’– SEE ALSO

go read the Kernel file ./include/linux/pci-epc.h and also these iconic siblings, not me listing every single one bc I love you 🧚:

  • struct pci_epc_map(9)
  • enum pci_epc_aux_resource_type(9)
  • struct pci_epc_aux_resource(9)
  • struct pci_epc_ops(9)
  • struct pci_epc_mem_window(9)
  • struct pci_epc_mem(9)
  • enum pci_epc_bar_type(9)
  • enum pci_epc_bar_rsvd_region_type(9)
  • struct pci_epc_bar_rsvd_region(9)
  • struct pci_epc_bar_desc(9)
  • struct pci_epc_features(9)

ok that's the whole page, go forth and slay the endpoint controller πŸ’…βœ¨

and that's a wrap bestie πŸŽ€ β€” this one came from ./include/linux, dated October 2026, and it's struct pci_epc(9) in the Kernel API Manual. mwah πŸ«ΆπŸ’–

πŸ“¦ where this page comes from