This appendix describes some general-purpose capability modules and their APIs.
Some general notes about capability modules:
- To obtain the pci_cap_t structure operated on by the specific capability module API, call
pci_device_read_cap().
- The module-specific APIs provide a means of querying and configuring capability-specific attributes
by operating on the pci_cap_t structure.
Changes don't actually take effect until you successfully call
pci_device_cfg_cap_enable().
- The module-specific APIs aren't available to driver software until you successfully call
pci_device_read_cap().
Software doesn't link against a capability module.
- In order to change capability attributes, you must disable the capability before
re-enabling it with an updated pci_cap_t.
- When you no longer need a pci_cap_t obtained from a successful
pci_device_read_cap() call, you can release it by calling
free().