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

📄 rsdump.c

📁 linux-2.6.15.6
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************* * * Module Name: rsdump - Functions to display the resource structures. * ******************************************************************************//* * Copyright (C) 2000 - 2005, R. Byron Moore * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions, and the following disclaimer, *    without modification. * 2. Redistributions in binary form must reproduce at minimum a disclaimer *    substantially similar to the "NO WARRANTY" disclaimer below *    ("Disclaimer") and any redistribution must be conditioned upon *    including a substantially similar Disclaimer requirement for further *    binary redistribution. * 3. Neither the names of the above-listed copyright holders nor the names *    of any contributors may be used to endorse or promote products derived *    from this software without specific prior written permission. * * Alternatively, this software may be distributed under the terms of the * GNU General Public License ("GPL") version 2 as published by the Free * Software Foundation. * * NO WARRANTY * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. */#include <acpi/acpi.h>#include <acpi/acresrc.h>#define _COMPONENT          ACPI_RESOURCESACPI_MODULE_NAME("rsdump")#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)/* Local prototypes */static void acpi_rs_dump_irq(union acpi_resource_data *data);static void acpi_rs_dump_address16(union acpi_resource_data *data);static void acpi_rs_dump_address32(union acpi_resource_data *data);static void acpi_rs_dump_address64(union acpi_resource_data *data);static void acpi_rs_dump_dma(union acpi_resource_data *data);static void acpi_rs_dump_io(union acpi_resource_data *data);static void acpi_rs_dump_extended_irq(union acpi_resource_data *data);static void acpi_rs_dump_fixed_io(union acpi_resource_data *data);static void acpi_rs_dump_fixed_memory32(union acpi_resource_data *data);static void acpi_rs_dump_memory24(union acpi_resource_data *data);static void acpi_rs_dump_memory32(union acpi_resource_data *data);static void acpi_rs_dump_start_depend_fns(union acpi_resource_data *data);static void acpi_rs_dump_vendor_specific(union acpi_resource_data *data);/******************************************************************************* * * FUNCTION:    acpi_rs_dump_irq * * PARAMETERS:  Data            - pointer to the resource structure to dump. * * RETURN:      None * * DESCRIPTION: Prints out the various members of the Data structure type. * ******************************************************************************/static void acpi_rs_dump_irq(union acpi_resource_data *data){	struct acpi_resource_irq *irq_data = (struct acpi_resource_irq *)data;	u8 index = 0;	ACPI_FUNCTION_ENTRY();	acpi_os_printf("IRQ Resource\n");	acpi_os_printf("  %s Triggered\n",		       ACPI_LEVEL_SENSITIVE ==		       irq_data->edge_level ? "Level" : "Edge");	acpi_os_printf("  Active %s\n",		       ACPI_ACTIVE_LOW ==		       irq_data->active_high_low ? "Low" : "High");	acpi_os_printf("  %s\n",		       ACPI_SHARED ==		       irq_data->shared_exclusive ? "Shared" : "Exclusive");	acpi_os_printf("  %X Interrupts ( ", irq_data->number_of_interrupts);	for (index = 0; index < irq_data->number_of_interrupts; index++) {		acpi_os_printf("%X ", irq_data->interrupts[index]);	}	acpi_os_printf(")\n");	return;}/******************************************************************************* * * FUNCTION:    acpi_rs_dump_dma * * PARAMETERS:  Data            - pointer to the resource structure to dump. * * RETURN:      None * * DESCRIPTION: Prints out the various members of the Data structure type. * ******************************************************************************/static void acpi_rs_dump_dma(union acpi_resource_data *data){	struct acpi_resource_dma *dma_data = (struct acpi_resource_dma *)data;	u8 index = 0;	ACPI_FUNCTION_ENTRY();	acpi_os_printf("DMA Resource\n");	switch (dma_data->type) {	case ACPI_COMPATIBILITY:		acpi_os_printf("  Compatibility mode\n");		break;	case ACPI_TYPE_A:		acpi_os_printf("  Type A\n");		break;	case ACPI_TYPE_B:		acpi_os_printf("  Type B\n");		break;	case ACPI_TYPE_F:		acpi_os_printf("  Type F\n");		break;	default:		acpi_os_printf("  Invalid DMA type\n");		break;	}	acpi_os_printf("  %sBus Master\n",		       ACPI_BUS_MASTER == dma_data->bus_master ? "" : "Not a ");	switch (dma_data->transfer) {	case ACPI_TRANSFER_8:		acpi_os_printf("  8-bit only transfer\n");		break;	case ACPI_TRANSFER_8_16:		acpi_os_printf("  8 and 16-bit transfer\n");		break;	case ACPI_TRANSFER_16:		acpi_os_printf("  16 bit only transfer\n");		break;	default:		acpi_os_printf("  Invalid transfer preference\n");		break;	}	acpi_os_printf("  Number of Channels: %X ( ",		       dma_data->number_of_channels);	for (index = 0; index < dma_data->number_of_channels; index++) {		acpi_os_printf("%X ", dma_data->channels[index]);	}	acpi_os_printf(")\n");	return;}/******************************************************************************* * * FUNCTION:    acpi_rs_dump_start_depend_fns * * PARAMETERS:  Data            - pointer to the resource structure to dump. * * RETURN:      None * * DESCRIPTION: Prints out the various members of the Data structure type. * ******************************************************************************/static void acpi_rs_dump_start_depend_fns(union acpi_resource_data *data){	struct acpi_resource_start_dpf *sdf_data =	    (struct acpi_resource_start_dpf *)data;	ACPI_FUNCTION_ENTRY();	acpi_os_printf("Start Dependent Functions Resource\n");	switch (sdf_data->compatibility_priority) {	case ACPI_GOOD_CONFIGURATION:		acpi_os_printf("  Good configuration\n");		break;	case ACPI_ACCEPTABLE_CONFIGURATION:		acpi_os_printf("  Acceptable configuration\n");		break;	case ACPI_SUB_OPTIMAL_CONFIGURATION:		acpi_os_printf("  Sub-optimal configuration\n");		break;	default:		acpi_os_printf("  Invalid compatibility priority\n");		break;	}	switch (sdf_data->performance_robustness) {	case ACPI_GOOD_CONFIGURATION:		acpi_os_printf("  Good configuration\n");		break;	case ACPI_ACCEPTABLE_CONFIGURATION:		acpi_os_printf("  Acceptable configuration\n");		break;	case ACPI_SUB_OPTIMAL_CONFIGURATION:		acpi_os_printf("  Sub-optimal configuration\n");		break;	default:		acpi_os_printf("  Invalid performance robustness preference\n");		break;	}	return;}/******************************************************************************* * * FUNCTION:    acpi_rs_dump_io * * PARAMETERS:  Data            - pointer to the resource structure to dump. * * RETURN:      None * * DESCRIPTION: Prints out the various members of the Data structure type. * ******************************************************************************/static void acpi_rs_dump_io(union acpi_resource_data *data){	struct acpi_resource_io *io_data = (struct acpi_resource_io *)data;	ACPI_FUNCTION_ENTRY();	acpi_os_printf("Io Resource\n");	acpi_os_printf("  %d bit decode\n",		       ACPI_DECODE_16 == io_data->io_decode ? 16 : 10);	acpi_os_printf("  Range minimum base: %08X\n",		       io_data->min_base_address);	acpi_os_printf("  Range maximum base: %08X\n",		       io_data->max_base_address);	acpi_os_printf("  Alignment: %08X\n", io_data->alignment);	acpi_os_printf("  Range Length: %08X\n", io_data->range_length);	return;}/******************************************************************************* * * FUNCTION:    acpi_rs_dump_fixed_io * * PARAMETERS:  Data            - pointer to the resource structure to dump. * * RETURN:      None * * DESCRIPTION: Prints out the various members of the Data structure type. * ******************************************************************************/static void acpi_rs_dump_fixed_io(union acpi_resource_data *data){	struct acpi_resource_fixed_io *fixed_io_data =	    (struct acpi_resource_fixed_io *)data;	ACPI_FUNCTION_ENTRY();	acpi_os_printf("Fixed Io Resource\n");	acpi_os_printf("  Range base address: %08X",		       fixed_io_data->base_address);	acpi_os_printf("  Range length: %08X", fixed_io_data->range_length);	return;}/******************************************************************************* * * FUNCTION:    acpi_rs_dump_vendor_specific * * PARAMETERS:  Data            - pointer to the resource structure to dump. * * RETURN:      None * * DESCRIPTION: Prints out the various members of the Data structure type. * ******************************************************************************/static void acpi_rs_dump_vendor_specific(union acpi_resource_data *data){	struct acpi_resource_vendor *vendor_data =	    (struct acpi_resource_vendor *)data;	u16 index = 0;	ACPI_FUNCTION_ENTRY();	acpi_os_printf("Vendor Specific Resource\n");	acpi_os_printf("  Length: %08X\n", vendor_data->length);	for (index = 0; index < vendor_data->length; index++) {		acpi_os_printf("  Byte %X: %08X\n",			       index, vendor_data->reserved[index]);	}	return;}/******************************************************************************* * * FUNCTION:    acpi_rs_dump_memory24 * * PARAMETERS:  Data            - pointer to the resource structure to dump. * * RETURN:      None * * DESCRIPTION: Prints out the various members of the Data structure type. * ******************************************************************************/static void acpi_rs_dump_memory24(union acpi_resource_data *data){	struct acpi_resource_mem24 *memory24_data =	    (struct acpi_resource_mem24 *)data;	ACPI_FUNCTION_ENTRY();	acpi_os_printf("24-Bit Memory Range Resource\n");	acpi_os_printf("  Read%s\n",		       ACPI_READ_WRITE_MEMORY ==		       memory24_data->read_write_attribute ?		       "/Write" : " only");	acpi_os_printf("  Range minimum base: %08X\n",		       memory24_data->min_base_address);	acpi_os_printf("  Range maximum base: %08X\n",		       memory24_data->max_base_address);	acpi_os_printf("  Alignment: %08X\n", memory24_data->alignment);	acpi_os_printf("  Range length: %08X\n", memory24_data->range_length);	return;}/******************************************************************************* * * FUNCTION:    acpi_rs_dump_memory32 * * PARAMETERS:  Data            - pointer to the resource structure to dump. * * RETURN:      None * * DESCRIPTION: Prints out the various members of the Data structure type. * ******************************************************************************/static void acpi_rs_dump_memory32(union acpi_resource_data *data){	struct acpi_resource_mem32 *memory32_data =	    (struct acpi_resource_mem32 *)data;	ACPI_FUNCTION_ENTRY();	acpi_os_printf("32-Bit Memory Range Resource\n");	acpi_os_printf("  Read%s\n",		       ACPI_READ_WRITE_MEMORY ==		       memory32_data->read_write_attribute ?		       "/Write" : " only");	acpi_os_printf("  Range minimum base: %08X\n",		       memory32_data->min_base_address);	acpi_os_printf("  Range maximum base: %08X\n",		       memory32_data->max_base_address);	acpi_os_printf("  Alignment: %08X\n", memory32_data->alignment);	acpi_os_printf("  Range length: %08X\n", memory32_data->range_length);	return;}/******************************************************************************* * * FUNCTION:    acpi_rs_dump_fixed_memory32 * * PARAMETERS:  Data            - pointer to the resource structure to dump. * * RETURN: * * DESCRIPTION: Prints out the various members of the Data structure type. * ******************************************************************************/static void acpi_rs_dump_fixed_memory32(union acpi_resource_data *data){	struct acpi_resource_fixed_mem32 *fixed_memory32_data =	    (struct acpi_resource_fixed_mem32 *)data;	ACPI_FUNCTION_ENTRY();	acpi_os_printf("32-Bit Fixed Location Memory Range Resource\n");	acpi_os_printf("  Read%s\n",		       ACPI_READ_WRITE_MEMORY ==		       fixed_memory32_data->		       read_write_attribute ? "/Write" : " Only");	acpi_os_printf("  Range base address: %08X\n",		       fixed_memory32_data->range_base_address);	acpi_os_printf("  Range length: %08X\n",		       fixed_memory32_data->range_length);	return;}/******************************************************************************* * * FUNCTION:    acpi_rs_dump_address16 * * PARAMETERS:  Data            - pointer to the resource structure to dump. * * RETURN:      None * * DESCRIPTION: Prints out the various members of the Data structure type. * ******************************************************************************/static void acpi_rs_dump_address16(union acpi_resource_data *data){	struct acpi_resource_address16 *address16_data =	    (struct acpi_resource_address16 *)data;	ACPI_FUNCTION_ENTRY();	acpi_os_printf("16-Bit Address Space Resource\n");	acpi_os_printf("  Resource Type: ");	switch (address16_data->resource_type) {	case ACPI_MEMORY_RANGE:		acpi_os_printf("Memory Range\n");		switch (address16_data->attribute.memory.cache_attribute) {		case ACPI_NON_CACHEABLE_MEMORY:			acpi_os_printf			    ("  Type Specific: Noncacheable memory\n");			break;		case ACPI_CACHABLE_MEMORY:			acpi_os_printf("  Type Specific: Cacheable memory\n");			break;		case ACPI_WRITE_COMBINING_MEMORY:			acpi_os_printf			    ("  Type Specific: Write-combining memory\n");			break;		case ACPI_PREFETCHABLE_MEMORY:			acpi_os_printf			    ("  Type Specific: Prefetchable memory\n");			break;		default:			acpi_os_printf			    ("  Type Specific: Invalid cache attribute\n");			break;		}		acpi_os_printf("  Type Specific: Read%s\n",			       ACPI_READ_WRITE_MEMORY ==			       address16_data->attribute.memory.			       read_write_attribute ? "/Write" : " Only");		break;	case ACPI_IO_RANGE:		acpi_os_printf("I/O Range\n");		switch (address16_data->attribute.io.range_attribute) {		case ACPI_NON_ISA_ONLY_RANGES:			acpi_os_printf			    ("  Type Specific: Non-ISA Io Addresses\n");			break;		case ACPI_ISA_ONLY_RANGES:			acpi_os_printf("  Type Specific: ISA Io Addresses\n");			break;		case ACPI_ENTIRE_RANGE:			acpi_os_printf			    ("  Type Specific: ISA and non-ISA Io Addresses\n");			break;		default:			acpi_os_printf			    ("  Type Specific: Invalid range attribute\n");			break;		}		acpi_os_printf("  Type Specific: %s Translation\n",			       ACPI_SPARSE_TRANSLATION ==			       address16_data->attribute.io.			       translation_attribute ? "Sparse" : "Dense");		break;	case ACPI_BUS_NUMBER_RANGE:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -