• Lv Zheng's avatar
    ACPICA: Linux headers: Add <acpi/platform/aclinuxex.h> · d13bd5a6
    Lv Zheng authored
    From ACPICA's perspective, <acpi/actypes.h> should be included after
    inclusion of <acpi/platform/acenv.h>.  But currently in Linux,
    <acpi/platform/aclinux.h> included by <acpi/platform/acenv.h> has
    included <acpi/actypes.h> to find ACPICA types for inline functions.
    
    This causes the following problem:
    1. Redundant code in <asm/acpi.h> and <acpi/platform/aclinux.h>:
       Linux must be careful to keep conditions for <acpi/actypes.h> inclusion
       consistent with the conditions for <acpi/platform/aclinux.h> inclusion.
       Which finally leads to the issue that we have to keep many useless macro
       definitions in <acpi/platform/aclinux.h> or <asm/acpi.h>.
       Such conditions include:
         COMPILER_DEPENDENT_UINT64
         COMPILER_DEPENDENT_INT64
         ACPI_INLINE
         ACPI_SYSTEM_XFACE
         ACPI_EXTERNAL_XFACE
         ACPI_INTERNAL_XFACE
         ACPI_INTERNAL_VAR_XFACE
         ACPI_MUTEX_TYPE
         DEBUGGER_THREADING
         ACPI_ACQUIRE_GLOBAL_LOCK
         ACPI_RELEASE_GLOBAL_LOCK
         ACPI_FLUSH_CPU_CACHE
       They have default implementations in <include/acpi/platform/acenv.h>
       while Linux need to keep a copy in <asm/acpi.h> to avoid build errors.
    
    This patch introduces <acpi/platform/aclinuxex.h> to fix this issue by
    splitting conditions and declarations (most of them are inline functions)
    into 2 header files so that the wrong inclusion of <acpi/actypes.h> can be
    removed from <acpi/platform/aclinux.h>.
    
    This patch also removes old ACPI_NATIVE_INTERFACE_HEADER mechanism which is
    not preferred by Linux and adds the platform/acenvex.h to be the solution
    to solve this issue.
    Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    d13bd5a6
acpi.h 3.07 KB