📄 rsdump.c
字号:
case MEMORY_RANGE:
acpi_os_printf ("Memory Range\n");
switch (address16_data->attribute.memory.cache_attribute) {
case NON_CACHEABLE_MEMORY:
acpi_os_printf ("\t\t_type Specific: "
"Noncacheable memory\n");
break;
case CACHABLE_MEMORY:
acpi_os_printf ("\t\t_type Specific: "
"Cacheable memory\n");
break;
case WRITE_COMBINING_MEMORY:
acpi_os_printf ("\t\t_type Specific: "
"Write-combining memory\n");
break;
case PREFETCHABLE_MEMORY:
acpi_os_printf ("\t\t_type Specific: "
"Prefetchable memory\n");
break;
default:
acpi_os_printf ("\t\t_type Specific: "
"Invalid cache attribute\n");
break;
}
acpi_os_printf ("\t\t_type Specific: Read%s\n",
READ_WRITE_MEMORY ==
address16_data->attribute.memory.read_write_attribute ?
"/Write" : " Only");
break;
case IO_RANGE:
acpi_os_printf ("I/O Range\n");
switch (address16_data->attribute.io.range_attribute) {
case NON_ISA_ONLY_RANGES:
acpi_os_printf ("\t\t_type Specific: "
"Non-ISA Io Addresses\n");
break;
case ISA_ONLY_RANGES:
acpi_os_printf ("\t\t_type Specific: "
"ISA Io Addresses\n");
break;
case ENTIRE_RANGE:
acpi_os_printf ("\t\t_type Specific: "
"ISA and non-ISA Io Addresses\n");
break;
default:
acpi_os_printf ("\t\t_type Specific: "
"Invalid range attribute\n");
break;
}
break;
case BUS_NUMBER_RANGE:
acpi_os_printf ("Bus Number Range\n");
break;
default:
acpi_os_printf ("Invalid resource type. Exiting.\n");
return;
}
acpi_os_printf ("\t\t_resource %s\n",
CONSUMER == address16_data->producer_consumer ?
"Consumer" : "Producer");
acpi_os_printf ("\t\t%s decode\n",
SUB_DECODE == address16_data->decode ?
"Subtractive" : "Positive");
acpi_os_printf ("\t\t_min address is %s fixed\n",
ADDRESS_FIXED == address16_data->min_address_fixed ?
"" : "not");
acpi_os_printf ("\t\t_max address is %s fixed\n",
ADDRESS_FIXED == address16_data->max_address_fixed ?
"" : "not");
acpi_os_printf ("\t\t_granularity: %08X\n",
address16_data->granularity);
acpi_os_printf ("\t\t_address range min: %08X\n",
address16_data->min_address_range);
acpi_os_printf ("\t\t_address range max: %08X\n",
address16_data->max_address_range);
acpi_os_printf ("\t\t_address translation offset: %08X\n",
address16_data->address_translation_offset);
acpi_os_printf ("\t\t_address Length: %08X\n",
address16_data->address_length);
if (0xFF != address16_data->resource_source_index) {
acpi_os_printf ("\t\t_resource Source Index: %X\n",
address16_data->resource_source_index);
acpi_os_printf ("\t\t_resource Source: %s\n",
address16_data->resource_source);
}
return;
}
/*******************************************************************************
*
* FUNCTION: Acpi_rs_dump_address32
*
* PARAMETERS: Data - pointer to the resource structure to dump.
*
* RETURN:
*
* DESCRIPTION: Prints out the various members of the Data structure type.
*
******************************************************************************/
void
acpi_rs_dump_address32 (
RESOURCE_DATA *data)
{
ADDRESS32_RESOURCE *address32_data = (ADDRESS32_RESOURCE*) data;
acpi_os_printf ("\t32-Bit Address Space Resource\n");
switch (address32_data->resource_type) {
case MEMORY_RANGE:
acpi_os_printf ("\t\t_resource Type: Memory Range\n");
switch (address32_data->attribute.memory.cache_attribute) {
case NON_CACHEABLE_MEMORY:
acpi_os_printf ("\t\t_type Specific: "
"Noncacheable memory\n");
break;
case CACHABLE_MEMORY:
acpi_os_printf ("\t\t_type Specific: "
"Cacheable memory\n");
break;
case WRITE_COMBINING_MEMORY:
acpi_os_printf ("\t\t_type Specific: "
"Write-combining memory\n");
break;
case PREFETCHABLE_MEMORY:
acpi_os_printf ("\t\t_type Specific: "
"Prefetchable memory\n");
break;
default:
acpi_os_printf ("\t\t_type Specific: "
"Invalid cache attribute\n");
break;
}
acpi_os_printf ("\t\t_type Specific: Read%s\n",
READ_WRITE_MEMORY ==
address32_data->attribute.memory.read_write_attribute ?
"/Write" : " Only");
break;
case IO_RANGE:
acpi_os_printf ("\t\t_resource Type: Io Range\n");
switch (address32_data->attribute.io.range_attribute) {
case NON_ISA_ONLY_RANGES:
acpi_os_printf ("\t\t_type Specific: "
"Non-ISA Io Addresses\n");
break;
case ISA_ONLY_RANGES:
acpi_os_printf ("\t\t_type Specific: "
"ISA Io Addresses\n");
break;
case ENTIRE_RANGE:
acpi_os_printf ("\t\t_type Specific: "
"ISA and non-ISA Io Addresses\n");
break;
default:
acpi_os_printf ("\t\t_type Specific: "
"Invalid Range attribute");
break;
}
break;
case BUS_NUMBER_RANGE:
acpi_os_printf ("\t\t_resource Type: Bus Number Range\n");
break;
default:
acpi_os_printf ("\t\t_invalid Resource Type..exiting.\n");
return;
}
acpi_os_printf ("\t\t_resource %s\n",
CONSUMER == address32_data->producer_consumer ?
"Consumer" : "Producer");
acpi_os_printf ("\t\t%s decode\n",
SUB_DECODE == address32_data->decode ?
"Subtractive" : "Positive");
acpi_os_printf ("\t\t_min address is %s fixed\n",
ADDRESS_FIXED == address32_data->min_address_fixed ?
"" : "not ");
acpi_os_printf ("\t\t_max address is %s fixed\n",
ADDRESS_FIXED == address32_data->max_address_fixed ?
"" : "not ");
acpi_os_printf ("\t\t_granularity: %08X\n",
address32_data->granularity);
acpi_os_printf ("\t\t_address range min: %08X\n",
address32_data->min_address_range);
acpi_os_printf ("\t\t_address range max: %08X\n",
address32_data->max_address_range);
acpi_os_printf ("\t\t_address translation offset: %08X\n",
address32_data->address_translation_offset);
acpi_os_printf ("\t\t_address Length: %08X\n",
address32_data->address_length);
if(0xFF != address32_data->resource_source_index) {
acpi_os_printf ("\t\t_resource Source Index: %X\n",
address32_data->resource_source_index);
acpi_os_printf ("\t\t_resource Source: %s\n",
address32_data->resource_source);
}
return;
}
/*******************************************************************************
*
* FUNCTION: Acpi_rs_dump_extended_irq
*
* PARAMETERS: Data - pointer to the resource structure to dump.
*
* RETURN:
*
* DESCRIPTION: Prints out the various members of the Data structure type.
*
******************************************************************************/
void
acpi_rs_dump_extended_irq (
RESOURCE_DATA *data)
{
EXTENDED_IRQ_RESOURCE *ext_irq_data = (EXTENDED_IRQ_RESOURCE*) data;
u8 index = 0;
acpi_os_printf ("\t_extended IRQ Resource\n");
acpi_os_printf ("\t\t_resource %s\n",
CONSUMER == ext_irq_data->producer_consumer ?
"Consumer" : "Producer");
acpi_os_printf ("\t\t%s\n",
LEVEL_SENSITIVE == ext_irq_data->edge_level ?
"Level" : "Edge");
acpi_os_printf ("\t\t_active %s\n",
ACTIVE_LOW == ext_irq_data->active_high_low ?
"low" : "high");
acpi_os_printf ("\t\t%s\n",
SHARED == ext_irq_data->shared_exclusive ?
"Shared" : "Exclusive");
acpi_os_printf ("\t\t_interrupts : %X ( ",
ext_irq_data->number_of_interrupts);
for (index = 0; index < ext_irq_data->number_of_interrupts; index++) {
acpi_os_printf ("%X ", ext_irq_data->interrupts[index]);
}
acpi_os_printf (")\n");
if(0xFF != ext_irq_data->resource_source_index) {
acpi_os_printf ("\t\t_resource Source Index: %X",
ext_irq_data->resource_source_index);
acpi_os_printf ("\t\t_resource Source: %s",
ext_irq_data->resource_source);
}
return;
}
/*******************************************************************************
*
* FUNCTION: Acpi_rs_dump_resource_list
*
* PARAMETERS: Data - pointer to the resource structure to dump.
*
* RETURN:
*
* DESCRIPTION: Dispatches the structure to the correct dump routine.
*
******************************************************************************/
void
acpi_rs_dump_resource_list (
RESOURCE *resource)
{
u8 count = 0;
u8 done = FALSE;
if (acpi_dbg_level & TRACE_RESOURCES && _COMPONENT & acpi_dbg_layer) {
while (!done) {
acpi_os_printf ("\t_resource structure %x.\n", count++);
switch (resource->id) {
case irq:
acpi_rs_dump_irq (&resource->data);
break;
case dma:
acpi_rs_dump_dma (&resource->data);
break;
case start_dependent_functions:
acpi_rs_dump_start_dependent_functions (&resource->data);
break;
case end_dependent_functions:
acpi_os_printf ("\t_end_dependent_functions Resource\n");
/* Acpi_rs_dump_end_dependent_functions (Resource->Data);*/
break;
case io:
acpi_rs_dump_io (&resource->data);
break;
case fixed_io:
acpi_rs_dump_fixed_io (&resource->data);
break;
case vendor_specific:
acpi_rs_dump_vendor_specific (&resource->data);
break;
case end_tag:
/*Rs_dump_end_tag (Resource->Data);*/
acpi_os_printf ("\t_end_tag Resource\n");
done = TRUE;
break;
case memory24:
acpi_rs_dump_memory24 (&resource->data);
break;
case memory32:
acpi_rs_dump_memory32 (&resource->data);
break;
case fixed_memory32:
acpi_rs_dump_fixed_memory32 (&resource->data);
break;
case address16:
acpi_rs_dump_address16 (&resource->data);
break;
case address32:
acpi_rs_dump_address32 (&resource->data);
break;
case extended_irq:
acpi_rs_dump_extended_irq (&resource->data);
break;
default:
acpi_os_printf ("Invalid resource type\n");
break;
}
resource = (RESOURCE *) ((NATIVE_UINT) resource +
(NATIVE_UINT) resource->length);
}
}
return;
}
/*******************************************************************************
*
* FUNCTION: Acpi_rs_dump_irq_list
*
* PARAMETERS: Data - pointer to the routing table to dump.
*
* RETURN:
*
* DESCRIPTION: Dispatches the structures to the correct dump routine.
*
******************************************************************************/
void
acpi_rs_dump_irq_list (
u8 *route_table)
{
u8 *buffer = route_table;
u8 count = 0;
u8 done = FALSE;
PCI_ROUTING_TABLE *prt_element;
if (acpi_dbg_level & TRACE_RESOURCES && _COMPONENT & acpi_dbg_layer) {
prt_element = (PCI_ROUTING_TABLE *) buffer;
while (!done) {
acpi_os_printf ("\t_pCI IRQ Routing Table structure %X.\n", count++);
acpi_os_printf ("\t\t_address: %X\n",
prt_element->address);
acpi_os_printf ("\t\t_pin: %X\n", prt_element->pin);
acpi_os_printf ("\t\t_source: %s\n", prt_element->source);
acpi_os_printf ("\t\t_source_index: %X\n",
prt_element->source_index);
buffer += prt_element->length;
prt_element = (PCI_ROUTING_TABLE *) buffer;
if(0 == prt_element->length) {
done = TRUE;
}
}
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -