⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rsdump.c

📁 winNT技术操作系统,国外开放的原代码和LIUX一样
💻 C
📖 第 1 页 / 共 2 页
字号:
	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 + -