9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim/*******************************************************************************
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Module Name: uterror - Various internal error/warning output functions
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ******************************************************************************/
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim/*
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Copyright (C) 2000 - 2016, Intel Corp.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * All rights reserved.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Redistribution and use in source and binary forms, with or without
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * modification, are permitted provided that the following conditions
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * are met:
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * 1. Redistributions of source code must retain the above copyright
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * notice, this list of conditions, and the following disclaimer,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * without modification.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * substantially similar to the "NO WARRANTY" disclaimer below
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * ("Disclaimer") and any redistribution must be conditioned upon
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * including a substantially similar Disclaimer requirement for further
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * binary redistribution.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * 3. Neither the names of the above-listed copyright holders nor the names
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * of any contributors may be used to endorse or promote products derived
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * from this software without specific prior written permission.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Alternatively, this software may be distributed under the terms of the
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * GNU General Public License ("GPL") version 2 as published by the Free
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Software Foundation.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * NO WARRANTY
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * POSSIBILITY OF SUCH DAMAGES.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim */
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim#include "acpi.h"
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim#include "accommon.h"
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim#include "acnamesp.h"
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim#define _COMPONENT ACPI_UTILITIES
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_MODULE_NAME ("uterror")
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim/*
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * This module contains internal error functions that may
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * be configured out.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim */
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim#if !defined (ACPI_NO_ERROR_MESSAGES)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim/*******************************************************************************
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * FUNCTION: AcpiUtPredefinedWarning
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * PARAMETERS: ModuleName - Caller's module name (for error output)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * LineNumber - Caller's line number (for error output)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Pathname - Full pathname to the node
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * NodeFlags - From Namespace node for the method/object
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Format - Printf format string + additional args
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * RETURN: None
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * DESCRIPTION: Warnings for the predefined validation module. Messages are
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * only emitted the first time a problem with a particular
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * method/object is detected. This prevents a flood of error
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * messages for methods that are repeatedly evaluated.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ******************************************************************************/
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kimvoid ACPI_INTERNAL_VAR_XFACE
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon KimAcpiUtPredefinedWarning (
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim const char *ModuleName,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim UINT32 LineNumber,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim char *Pathname,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim UINT8 NodeFlags,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim const char *Format,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ...)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim{
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim va_list ArgList;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim /*
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Warning messages for this method/object will be disabled after the
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * first time a validation fails or an object is successfully repaired.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim */
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim if (NodeFlags & ANOBJ_EVALUATED)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim {
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim return;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim }
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiOsPrintf (ACPI_MSG_WARNING "%s: ", Pathname);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim va_start (ArgList, Format);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiOsVprintf (Format, ArgList);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_MSG_SUFFIX;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim va_end (ArgList);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim}
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim/*******************************************************************************
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * FUNCTION: AcpiUtPredefinedInfo
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * PARAMETERS: ModuleName - Caller's module name (for error output)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * LineNumber - Caller's line number (for error output)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Pathname - Full pathname to the node
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * NodeFlags - From Namespace node for the method/object
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Format - Printf format string + additional args
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * RETURN: None
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * DESCRIPTION: Info messages for the predefined validation module. Messages
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * are only emitted the first time a problem with a particular
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * method/object is detected. This prevents a flood of
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * messages for methods that are repeatedly evaluated.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ******************************************************************************/
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kimvoid ACPI_INTERNAL_VAR_XFACE
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon KimAcpiUtPredefinedInfo (
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim const char *ModuleName,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim UINT32 LineNumber,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim char *Pathname,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim UINT8 NodeFlags,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim const char *Format,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ...)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim{
0778188f242b11e5d53f771c9e8a069354b3d5d4Hengqing Hu va_list ArgList;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim /*
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Warning messages for this method/object will be disabled after the
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * first time a validation fails or an object is successfully repaired.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim */
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim if (NodeFlags & ANOBJ_EVALUATED)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim {
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim return;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim }
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiOsPrintf (ACPI_MSG_INFO "%s: ", Pathname);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim va_start (ArgList, Format);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiOsVprintf (Format, ArgList);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_MSG_SUFFIX;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim va_end (ArgList);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim}
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim/*******************************************************************************
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * FUNCTION: AcpiUtPredefinedBiosError
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * PARAMETERS: ModuleName - Caller's module name (for error output)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * LineNumber - Caller's line number (for error output)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Pathname - Full pathname to the node
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * NodeFlags - From Namespace node for the method/object
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Format - Printf format string + additional args
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * RETURN: None
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * DESCRIPTION: BIOS error message for predefined names. Messages
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * are only emitted the first time a problem with a particular
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * method/object is detected. This prevents a flood of
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * messages for methods that are repeatedly evaluated.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ******************************************************************************/
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kimvoid ACPI_INTERNAL_VAR_XFACE
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon KimAcpiUtPredefinedBiosError (
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim const char *ModuleName,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim UINT32 LineNumber,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim char *Pathname,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim UINT8 NodeFlags,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim const char *Format,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ...)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim{
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim va_list ArgList;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim /*
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Warning messages for this method/object will be disabled after the
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * first time a validation fails or an object is successfully repaired.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim */
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim if (NodeFlags & ANOBJ_EVALUATED)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim {
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim return;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim }
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiOsPrintf (ACPI_MSG_BIOS_ERROR "%s: ", Pathname);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim va_start (ArgList, Format);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiOsVprintf (Format, ArgList);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_MSG_SUFFIX;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim va_end (ArgList);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim}
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim/*******************************************************************************
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * FUNCTION: AcpiUtNamespaceError
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * PARAMETERS: ModuleName - Caller's module name (for error output)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * LineNumber - Caller's line number (for error output)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * InternalName - Name or path of the namespace node
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * LookupStatus - Exception code from NS lookup
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * RETURN: None
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * DESCRIPTION: Print error message with the full pathname for the NS node.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ******************************************************************************/
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kimvoid
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon KimAcpiUtNamespaceError (
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim const char *ModuleName,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim UINT32 LineNumber,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim const char *InternalName,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_STATUS LookupStatus)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim{
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_STATUS Status;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim UINT32 BadName;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim char *Name = NULL;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_MSG_REDIRECT_BEGIN;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiOsPrintf (ACPI_MSG_ERROR);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim if (LookupStatus == AE_BAD_CHARACTER)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim {
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim /* There is a non-ascii character in the name */
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_MOVE_32_TO_32 (&BadName, ACPI_CAST_PTR (UINT32, InternalName));
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiOsPrintf ("[0x%.8X] (NON-ASCII)", BadName);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim }
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim else
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim {
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim /* Convert path to external format */
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim Status = AcpiNsExternalizeName (
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_UINT32_MAX, InternalName, NULL, &Name);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim /* Print target name */
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim if (ACPI_SUCCESS (Status))
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim {
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiOsPrintf ("[%s]", Name);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim }
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim else
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim {
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiOsPrintf ("[COULD NOT EXTERNALIZE NAME]");
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim }
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim if (Name)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim {
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_FREE (Name);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim }
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim }
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiOsPrintf (" Namespace lookup failure, %s",
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiFormatException (LookupStatus));
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_MSG_SUFFIX;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_MSG_REDIRECT_END;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim}
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim/*******************************************************************************
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * FUNCTION: AcpiUtMethodError
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * PARAMETERS: ModuleName - Caller's module name (for error output)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * LineNumber - Caller's line number (for error output)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Message - Error message to use on failure
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * PrefixNode - Prefix relative to the path
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * Path - Path to the node (optional)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * MethodStatus - Execution status
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * RETURN: None
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim * DESCRIPTION: Print error message with the full pathname for the method.
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim *
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ******************************************************************************/
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kimvoid
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon KimAcpiUtMethodError (
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim const char *ModuleName,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim UINT32 LineNumber,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim const char *Message,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_NAMESPACE_NODE *PrefixNode,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim const char *Path,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_STATUS MethodStatus)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim{
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_STATUS Status;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_NAMESPACE_NODE *Node = PrefixNode;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_MSG_REDIRECT_BEGIN;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiOsPrintf (ACPI_MSG_ERROR);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim if (Path)
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim {
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim Status = AcpiNsGetNode (PrefixNode, Path,
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_NS_NO_UPSEARCH, &Node);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim if (ACPI_FAILURE (Status))
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim {
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiOsPrintf ("[Could not get node by pathname]");
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim }
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim }
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiNsPrintNodePathname (Node, Message);
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim AcpiOsPrintf (", %s", AcpiFormatException (MethodStatus));
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_MSG_SUFFIX;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim ACPI_MSG_REDIRECT_END;
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim}
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim#endif /* ACPI_NO_ERROR_MESSAGES */
9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bbHyon Kim