drivers/acpi/acpica/dbdisply.c
Source file repositories/reference/linux-study-clean/drivers/acpi/acpica/dbdisply.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/acpi/acpica/dbdisply.c- Extension
.c- Size
- 28188 bytes
- Lines
- 1097
- Domain
- Driver Families
- Bucket
- drivers/acpi
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
acpi/acpi.haccommon.hamlcode.hacdispat.hacnamesp.hacparser.hacinterp.hacevents.hacdebug.h
Detected Declarations
function acpi_db_dump_parser_descriptorfunction acpi_db_decode_and_display_objectfunction acpi_db_display_method_infofunction acpi_db_display_localsfunction acpi_db_display_argumentsfunction acpi_db_display_resultsfunction acpi_db_display_calling_treefunction acpi_db_display_object_typefunction acpi_db_display_result_objectfunction acpi_db_display_argument_objectfunction acpi_db_display_gpesfunction acpi_db_display_handlersfunction acpi_db_display_non_root_handlers
Annotated Snippet
if (output_type[0] == 'W') {
display = DB_WORD_DISPLAY;
} else if (output_type[0] == 'D') {
display = DB_DWORD_DISPLAY;
} else if (output_type[0] == 'Q') {
display = DB_QWORD_DISPLAY;
}
}
ret_buf.length = sizeof(buffer);
ret_buf.pointer = buffer;
/* Differentiate between a number and a name */
if ((target[0] >= 0x30) && (target[0] <= 0x39)) {
obj_ptr = acpi_db_get_pointer(target);
if (!acpi_os_readable(obj_ptr, 16)) {
acpi_os_printf
("Address %p is invalid in this address space\n",
obj_ptr);
return;
}
/* Decode the object type */
switch (ACPI_GET_DESCRIPTOR_TYPE(obj_ptr)) {
case ACPI_DESC_TYPE_NAMED:
/* This is a namespace Node */
if (!acpi_os_readable
(obj_ptr, sizeof(struct acpi_namespace_node))) {
acpi_os_printf
("Cannot read entire Named object at address %p\n",
obj_ptr);
return;
}
node = obj_ptr;
goto dump_node;
case ACPI_DESC_TYPE_OPERAND:
/* This is a ACPI OPERAND OBJECT */
if (!acpi_os_readable
(obj_ptr, sizeof(union acpi_operand_object))) {
acpi_os_printf
("Cannot read entire ACPI object at address %p\n",
obj_ptr);
return;
}
acpi_ut_debug_dump_buffer(obj_ptr,
sizeof(union
acpi_operand_object),
display, ACPI_UINT32_MAX);
acpi_ex_dump_object_descriptor(obj_ptr, 1);
break;
case ACPI_DESC_TYPE_PARSER:
/* This is a Parser Op object */
if (!acpi_os_readable
(obj_ptr, sizeof(union acpi_parse_object))) {
acpi_os_printf
("Cannot read entire Parser object at address %p\n",
obj_ptr);
return;
}
acpi_ut_debug_dump_buffer(obj_ptr,
sizeof(union
acpi_parse_object),
display, ACPI_UINT32_MAX);
acpi_db_dump_parser_descriptor((union acpi_parse_object
*)obj_ptr);
break;
default:
/* Is not a recognizable object */
acpi_os_printf
("Not a known ACPI internal object, descriptor type %2.2X\n",
ACPI_GET_DESCRIPTOR_TYPE(obj_ptr));
size = 16;
if (acpi_os_readable(obj_ptr, 64)) {
Annotation
- Immediate include surface: `acpi/acpi.h`, `accommon.h`, `amlcode.h`, `acdispat.h`, `acnamesp.h`, `acparser.h`, `acinterp.h`, `acevents.h`.
- Detected declarations: `function acpi_db_dump_parser_descriptor`, `function acpi_db_decode_and_display_object`, `function acpi_db_display_method_info`, `function acpi_db_display_locals`, `function acpi_db_display_arguments`, `function acpi_db_display_results`, `function acpi_db_display_calling_tree`, `function acpi_db_display_object_type`, `function acpi_db_display_result_object`, `function acpi_db_display_argument_object`.
- Atlas domain: Driver Families / drivers/acpi.
- 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.