drivers/pci/hotplug/acpiphp.h
Source file repositories/reference/linux-study-clean/drivers/pci/hotplug/acpiphp.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/pci/hotplug/acpiphp.h- Extension
.h- Size
- 4709 bytes
- Lines
- 188
- Domain
- Representative Device Path
- Bucket
- PCIe NVMe Storage Path
- Inferred role
- Representative Device Path: implementation source
- Status
- source implementation candidate
Why This File Exists
Part of the selected hardware vertical slice: PCI discovery, driver binding, NVMe queues, block requests, DMA, interrupts, and completion.
- Part of the selected hardware vertical slice: PCI discovery, driver binding, NVMe queues, block requests, DMA, interrupts, and completion.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/acpi.hlinux/mutex.hlinux/pci_hotplug.h
Detected Declarations
struct acpiphp_contextstruct acpiphp_bridgestruct acpiphp_slotstruct slotstruct acpiphp_bridgestruct acpiphp_slotstruct acpiphp_funcstruct acpiphp_contextstruct acpiphp_root_contextstruct acpiphp_attention_infofunction func_to_handle
Annotated Snippet
struct slot {
struct hotplug_slot hotplug_slot;
struct acpiphp_slot *acpi_slot;
unsigned int sun; /* ACPI _SUN (Slot User Number) value */
};
static inline const char *slot_name(struct slot *slot)
{
return hotplug_slot_name(&slot->hotplug_slot);
}
static inline struct slot *to_slot(struct hotplug_slot *hotplug_slot)
{
return container_of(hotplug_slot, struct slot, hotplug_slot);
}
/*
* struct acpiphp_bridge - PCI bridge information
*
* for each bridge device in ACPI namespace
*/
struct acpiphp_bridge {
struct list_head list;
struct list_head slots;
struct kref ref;
struct acpiphp_context *context;
int nr_slots;
/* This bus (host bridge) or Secondary bus (PCI-to-PCI bridge) */
struct pci_bus *pci_bus;
/* PCI-to-PCI bridge device */
struct pci_dev *pci_dev;
bool is_going_away;
};
/*
* struct acpiphp_slot - PCI slot information
*
* PCI slot information for each *physical* PCI slot
*/
struct acpiphp_slot {
struct list_head node;
struct pci_bus *bus;
struct list_head funcs; /* one slot may have different
objects (i.e. for each function) */
struct slot *slot;
u8 device; /* pci device# */
u32 flags; /* see below */
};
/*
* struct acpiphp_func - PCI function information
*
* PCI function information for each object in ACPI namespace
* typically 8 objects per slot (i.e. for each PCI function)
*/
struct acpiphp_func {
struct acpiphp_bridge *parent;
struct acpiphp_slot *slot;
struct list_head sibling;
u8 function; /* pci function# */
u32 flags; /* see below */
};
struct acpiphp_context {
struct acpi_hotplug_context hp;
struct acpiphp_func func;
struct acpiphp_bridge *bridge;
unsigned int refcount;
};
static inline struct acpiphp_context *to_acpiphp_context(struct acpi_hotplug_context *hp)
{
return container_of(hp, struct acpiphp_context, hp);
}
static inline struct acpiphp_context *func_to_context(struct acpiphp_func *func)
{
return container_of(func, struct acpiphp_context, func);
}
Annotation
- Immediate include surface: `linux/acpi.h`, `linux/mutex.h`, `linux/pci_hotplug.h`.
- Detected declarations: `struct acpiphp_context`, `struct acpiphp_bridge`, `struct acpiphp_slot`, `struct slot`, `struct acpiphp_bridge`, `struct acpiphp_slot`, `struct acpiphp_func`, `struct acpiphp_context`, `struct acpiphp_root_context`, `struct acpiphp_attention_info`.
- Atlas domain: Representative Device Path / PCIe NVMe Storage Path.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.