aboutsummaryrefslogtreecommitdiff
path: root/tables/tbutils.c
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2009-06-25 23:20:50 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2009-06-25 23:20:50 +0000
commit22724f14194b3fe80a6a7848da104f7916536a52 (patch)
tree90ff140546ac1c8f9223f343715887361e86492a /tables/tbutils.c
parente83ee77d7b009e11006d75946be388f7b99f9990 (diff)
downloadsrc-22724f14194b3fe80a6a7848da104f7916536a52.tar.gz
src-22724f14194b3fe80a6a7848da104f7916536a52.zip
Import ACPICA 20090625vendor/acpica/20090625
Notes
Notes: svn path=/vendor-sys/acpica/dist/; revision=195013 svn path=/vendor-sys/acpica/20090625/; revision=195014; tag=vendor/acpica/20090625
Diffstat (limited to 'tables/tbutils.c')
-rw-r--r--tables/tbutils.c89
1 files changed, 84 insertions, 5 deletions
diff --git a/tables/tbutils.c b/tables/tbutils.c
index f4803a2e7627..ec2a88e283d3 100644
--- a/tables/tbutils.c
+++ b/tables/tbutils.c
@@ -124,6 +124,16 @@
/* Local prototypes */
+static void
+AcpiTbFixString (
+ char *String,
+ ACPI_SIZE Length);
+
+static void
+AcpiTbCleanupTableHeader (
+ ACPI_TABLE_HEADER *OutHeader,
+ ACPI_TABLE_HEADER *Header);
+
static ACPI_PHYSICAL_ADDRESS
AcpiTbGetRootTableEntry (
UINT8 *TableEntry,
@@ -185,6 +195,67 @@ AcpiTbTablesLoaded (
/*******************************************************************************
*
+ * FUNCTION: AcpiTbFixString
+ *
+ * PARAMETERS: String - String to be repaired
+ * Length - Maximum length
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Replace every non-printable or non-ascii byte in the string
+ * with a question mark '?'.
+ *
+ ******************************************************************************/
+
+static void
+AcpiTbFixString (
+ char *String,
+ ACPI_SIZE Length)
+{
+
+ while (Length && *String)
+ {
+ if (!ACPI_IS_PRINT (*String))
+ {
+ *String = '?';
+ }
+ String++;
+ Length--;
+ }
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiTbCleanupTableHeader
+ *
+ * PARAMETERS: OutHeader - Where the cleaned header is returned
+ * Header - Input ACPI table header
+ *
+ * RETURN: Returns the cleaned header in OutHeader
+ *
+ * DESCRIPTION: Copy the table header and ensure that all "string" fields in
+ * the header consist of printable characters.
+ *
+ ******************************************************************************/
+
+static void
+AcpiTbCleanupTableHeader (
+ ACPI_TABLE_HEADER *OutHeader,
+ ACPI_TABLE_HEADER *Header)
+{
+
+ ACPI_MEMCPY (OutHeader, Header, sizeof (ACPI_TABLE_HEADER));
+
+ AcpiTbFixString (OutHeader->Signature, ACPI_NAME_SIZE);
+ AcpiTbFixString (OutHeader->OemId, ACPI_OEM_ID_SIZE);
+ AcpiTbFixString (OutHeader->OemTableId, ACPI_OEM_TABLE_ID_SIZE);
+ AcpiTbFixString (OutHeader->AslCompilerId, ACPI_NAME_SIZE);
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiTbPrintTableHeader
*
* PARAMETERS: Address - Table physical address
@@ -201,6 +272,8 @@ AcpiTbPrintTableHeader (
ACPI_PHYSICAL_ADDRESS Address,
ACPI_TABLE_HEADER *Header)
{
+ ACPI_TABLE_HEADER LocalHeader;
+
/*
* The reason that the Address is cast to a void pointer is so that we
@@ -218,23 +291,29 @@ AcpiTbPrintTableHeader (
{
/* RSDP has no common fields */
+ ACPI_MEMCPY (LocalHeader.OemId,
+ ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->OemId, ACPI_OEM_ID_SIZE);
+ AcpiTbFixString (LocalHeader.OemId, ACPI_OEM_ID_SIZE);
+
ACPI_INFO ((AE_INFO, "RSDP %p %05X (v%.2d %6.6s)",
ACPI_CAST_PTR (void, Address),
(ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Revision > 0) ?
ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Length : 20,
ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Revision,
- ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->OemId));
+ LocalHeader.OemId));
}
else
{
/* Standard ACPI table with full common header */
+ AcpiTbCleanupTableHeader (&LocalHeader, Header);
+
ACPI_INFO ((AE_INFO,
"%4.4s %p %05X (v%.2d %6.6s %8.8s %08X %4.4s %08X)",
- Header->Signature, ACPI_CAST_PTR (void, Address),
- Header->Length, Header->Revision, Header->OemId,
- Header->OemTableId, Header->OemRevision, Header->AslCompilerId,
- Header->AslCompilerRevision));
+ LocalHeader.Signature, ACPI_CAST_PTR (void, Address),
+ LocalHeader.Length, LocalHeader.Revision, LocalHeader.OemId,
+ LocalHeader.OemTableId, LocalHeader.OemRevision,
+ LocalHeader.AslCompilerId, LocalHeader.AslCompilerRevision));
}
}