include/linux/acpi.h
Source file repositories/reference/linux-study-clean/include/linux/acpi.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/acpi.h- Extension
.h- Size
- 47452 bytes
- Lines
- 1653
- Domain
- Core OS
- Bucket
- Core Kernel Interface
- Inferred role
- Core OS: operation-table or driver-model contract
- Status
- pattern implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Defines an operation table; this is where Linux turns generic core objects into subsystem-specific behavior.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/cleanup.hlinux/errno.hlinux/ioport.hlinux/resource_ext.hlinux/device.hlinux/mod_devicetable.hlinux/property.hlinux/uuid.hlinux/node.hacpi/acpi.hacpi/acpi_numa.hlinux/list.hlinux/dynamic_debug.hlinux/module.hlinux/mutex.hlinux/fw_table.hacpi/acpi_bus.hacpi/acpi_drivers.hacpi/acpi_io.hasm/acpi.h
Detected Declarations
struct irq_domainstruct irq_domain_opsstruct acpi_debugger_opsstruct acpi_debuggerstruct acpi_processor_powerstruct pci_devstruct acpi_osc_contextstruct acpi_platform_liststruct fwnode_handlestruct acpi_devicestruct acpi_table_headerstruct acpi_device_idstruct acpi_osc_contextstruct acpi_s2idle_dev_opsstruct acpi_probe_entrystruct acpi_probe_entryenum acpi_irq_model_idenum acpi_interrupt_idenum acpi_address_range_idenum acpi_predicateenum acpi_reconfig_eventfunction acpi_device_handlefunction acpi_device_handlefunction acpi_free_fwnode_staticfunction has_acpi_companionfunction acpi_preset_companionfunction acpi_debugger_initfunction acpi_register_debuggerfunction acpi_unregister_debuggerfunction acpi_debugger_write_logfunction acpi_debugger_read_cmdfunction acpi_debugger_wait_command_readyfunction acpi_debugger_notify_command_completefunction acpi_numa_processor_affinity_initfunction acpi_arch_dma_setupfunction acpi_numa_gicc_affinity_initfunction acpi_numa_rintc_affinity_initfunction invalid_logical_cpuidfunction invalid_phys_cpuidfunction acpi_processor_claim_cst_controlfunction acpi_processor_evaluate_cstfunction acpi_sci_irq_validfunction acpi_get_override_irqfunction acpi_penalize_sci_irqfunction acpi_get_genport_coordinatesfunction pxm_to_nodefunction pxm_to_online_nodefunction acpi_map_pxm_to_node
Annotated Snippet
const struct device_driver *drv);
int acpi_device_uevent_modalias(const struct device *, struct kobj_uevent_env *);
int acpi_device_modalias(struct device *, char *, int);
struct platform_device *acpi_create_platform_device(struct acpi_device *,
const struct property_entry *);
#define ACPI_PTR(_ptr) (_ptr)
static inline void acpi_device_set_enumerated(struct acpi_device *adev)
{
adev->flags.visited = true;
}
static inline void acpi_device_clear_enumerated(struct acpi_device *adev)
{
adev->flags.visited = false;
}
enum acpi_reconfig_event {
ACPI_RECONFIG_DEVICE_ADD = 0,
ACPI_RECONFIG_DEVICE_REMOVE,
};
int acpi_reconfig_notifier_register(struct notifier_block *nb);
int acpi_reconfig_notifier_unregister(struct notifier_block *nb);
#ifdef CONFIG_ACPI_GTDT
int acpi_gtdt_init(struct acpi_table_header *table, int *platform_timer_count);
int acpi_gtdt_map_ppi(int type);
bool acpi_gtdt_c3stop(int type);
#endif
#ifndef ACPI_HAVE_ARCH_SET_ROOT_POINTER
static __always_inline void acpi_arch_set_root_pointer(u64 addr)
{
}
#endif
#ifndef ACPI_HAVE_ARCH_GET_ROOT_POINTER
static __always_inline u64 acpi_arch_get_root_pointer(void)
{
return 0;
}
#endif
int acpi_get_local_u64_address(acpi_handle handle, u64 *addr);
int acpi_get_local_address(acpi_handle handle, u32 *addr);
const char *acpi_get_subsystem_id(acpi_handle handle);
#ifdef CONFIG_ACPI_MRRM
int acpi_mrrm_max_mem_region(void);
#endif
#define ACPI_CMOS_RTC_IDS \
{ "PNP0B00", }, \
{ "PNP0B01", }, \
{ "PNP0B02", }, \
{ "", }
extern bool cmos_rtc_platform_device_present;
#else /* !CONFIG_ACPI */
#define acpi_disabled 1
#define ACPI_COMPANION(dev) (NULL)
#define ACPI_COMPANION_SET(dev, adev) do { } while (0)
#define ACPI_HANDLE(dev) (NULL)
#define ACPI_HANDLE_FWNODE(fwnode) (NULL)
/* Get rid of the -Wunused-variable for adev */
#define acpi_dev_uid_match(adev, uid2) (adev && false)
#define acpi_dev_hid_uid_match(adev, hid2, uid2) (adev && false)
struct fwnode_handle;
static inline bool acpi_dev_found(const char *hid)
{
return false;
}
static inline bool acpi_dev_present(const char *hid, const char *uid, s64 hrv)
{
return false;
}
struct acpi_device;
static inline int acpi_dev_uid_to_integer(struct acpi_device *adev, u64 *integer)
{
Annotation
- Immediate include surface: `linux/cleanup.h`, `linux/errno.h`, `linux/ioport.h`, `linux/resource_ext.h`, `linux/device.h`, `linux/mod_devicetable.h`, `linux/property.h`, `linux/uuid.h`.
- Detected declarations: `struct irq_domain`, `struct irq_domain_ops`, `struct acpi_debugger_ops`, `struct acpi_debugger`, `struct acpi_processor_power`, `struct pci_dev`, `struct acpi_osc_context`, `struct acpi_platform_list`, `struct fwnode_handle`, `struct acpi_device`.
- Atlas domain: Core OS / Core Kernel Interface.
- Implementation status: pattern implementation candidate.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
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.