linux/include/acpi/platform/acenv.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
   2/******************************************************************************
   3 *
   4 * Name: acenv.h - Host and compiler configuration
   5 *
   6 * Copyright (C) 2000 - 2021, Intel Corp.
   7 *
   8 *****************************************************************************/
   9
  10#ifndef __ACENV_H__
  11#define __ACENV_H__
  12
  13/*
  14 * Environment configuration. The purpose of this file is to interface ACPICA
  15 * to the local environment. This includes compiler-specific, OS-specific,
  16 * and machine-specific configuration.
  17 */
  18
  19/* Types for ACPI_MUTEX_TYPE */
  20
  21#define ACPI_BINARY_SEMAPHORE       0
  22#define ACPI_OSL_MUTEX              1
  23
  24/* Types for DEBUGGER_THREADING */
  25
  26#define DEBUGGER_SINGLE_THREADED    0
  27#define DEBUGGER_MULTI_THREADED     1
  28
  29/******************************************************************************
  30 *
  31 * Configuration for ACPI tools and utilities
  32 *
  33 *****************************************************************************/
  34
  35/* Common application configuration. All single threaded except for acpi_exec. */
  36
  37#if (defined ACPI_ASL_COMPILER) || \
  38        (defined ACPI_BIN_APP)      || \
  39        (defined ACPI_DUMP_APP)     || \
  40        (defined ACPI_HELP_APP)     || \
  41        (defined ACPI_NAMES_APP)    || \
  42        (defined ACPI_SRC_APP)      || \
  43        (defined ACPI_XTRACT_APP)   || \
  44        (defined ACPI_EXAMPLE_APP)  || \
  45        (defined ACPI_EFI_HELLO)
  46#define ACPI_APPLICATION
  47#define ACPI_SINGLE_THREADED
  48#define USE_NATIVE_ALLOCATE_ZEROED
  49#endif
  50
  51/* iASL configuration */
  52
  53#ifdef ACPI_ASL_COMPILER
  54#define ACPI_DEBUG_OUTPUT
  55#define ACPI_CONSTANT_EVAL_ONLY
  56#define ACPI_LARGE_NAMESPACE_NODE
  57#define ACPI_DATA_TABLE_DISASSEMBLY
  58#define ACPI_32BIT_PHYSICAL_ADDRESS
  59#define ACPI_DISASSEMBLER 1
  60#endif
  61
  62/* acpi_exec configuration. Multithreaded with full AML debugger */
  63
  64#ifdef ACPI_EXEC_APP
  65#define ACPI_APPLICATION
  66#define ACPI_FULL_DEBUG
  67#define ACPI_MUTEX_DEBUG
  68#define ACPI_DBG_TRACK_ALLOCATIONS
  69#endif
  70
  71/* acpi_help configuration. Error messages disabled. */
  72
  73#ifdef ACPI_HELP_APP
  74#define ACPI_NO_ERROR_MESSAGES
  75#endif
  76
  77/* acpi_names configuration. Debug output enabled. */
  78
  79#ifdef ACPI_NAMES_APP
  80#define ACPI_DEBUG_OUTPUT
  81#endif
  82
  83/* acpi_exec/acpi_names/Example configuration. Native RSDP used. */
  84
  85#if (defined ACPI_EXEC_APP)     || \
  86        (defined ACPI_EXAMPLE_APP)  || \
  87        (defined ACPI_NAMES_APP)
  88#define ACPI_USE_NATIVE_RSDP_POINTER
  89#endif
  90
  91/* acpi_dump configuration. Native mapping used if provided by the host */
  92
  93#ifdef ACPI_DUMP_APP
  94#define ACPI_USE_NATIVE_MEMORY_MAPPING
  95#endif
  96
  97/* acpi_names/Example configuration. Hardware disabled */
  98
  99#if (defined ACPI_EXAMPLE_APP)  || \
 100        (defined ACPI_NAMES_APP)
 101#define ACPI_REDUCED_HARDWARE 1
 102#endif
 103
 104/* Linkable ACPICA library. Two versions, one with full debug. */
 105
 106#ifdef ACPI_LIBRARY
 107#define ACPI_USE_LOCAL_CACHE
 108#define ACPI_DEBUGGER 1
 109#define ACPI_DISASSEMBLER 1
 110
 111#ifdef _DEBUG
 112#define ACPI_DEBUG_OUTPUT
 113#endif
 114#endif
 115
 116/* Common for all ACPICA applications */
 117
 118#ifdef ACPI_APPLICATION
 119#define ACPI_USE_LOCAL_CACHE
 120#endif
 121
 122/* Common debug/disassembler support */
 123
 124#ifdef ACPI_FULL_DEBUG
 125#define ACPI_DEBUG_OUTPUT
 126#define ACPI_DEBUGGER 1
 127#define ACPI_DISASSEMBLER 1
 128#endif
 129
 130
 131/*
 132 * acpisrc CR\LF support
 133 * Unix file line endings do not include the carriage return.
 134 * If the acpisrc utility is being built using a microsoft compiler, it means
 135 * that it will be running on a windows machine which means that the output is
 136 * expected to have CR/LF newlines. If the acpisrc utility is built with
 137 * anything else, it will likely run on a system with LF newlines. This flag
 138 * tells the acpisrc utility that newlines will be in the LF format.
 139 */
 140#define ACPI_SRC_OS_LF_ONLY 0
 141
 142/*! [Begin] no source code translation */
 143
 144/******************************************************************************
 145 *
 146 * Host configuration files. The compiler configuration files are included
 147 * first.
 148 *
 149 *****************************************************************************/
 150
 151#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
 152#include <acpi/platform/acgcc.h>
 153
 154#elif defined(_MSC_VER)
 155#include "acmsvc.h"
 156
 157#elif defined(__INTEL_COMPILER)
 158#include <acpi/platform/acintel.h>
 159
 160#endif
 161
 162#if defined(_LINUX) || defined(__linux__)
 163#include <acpi/platform/aclinux.h>
 164
 165#elif defined(_APPLE) || defined(__APPLE__)
 166#include "acmacosx.h"
 167
 168#elif defined(__DragonFly__)
 169#include "acdragonfly.h"
 170
 171#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 172#include "acfreebsd.h"
 173
 174#elif defined(__NetBSD__)
 175#include "acnetbsd.h"
 176
 177#elif defined(__sun)
 178#include "acsolaris.h"
 179
 180#elif defined(MODESTO)
 181#include "acmodesto.h"
 182
 183#elif defined(NETWARE)
 184#include "acnetware.h"
 185
 186#elif defined(_CYGWIN)
 187#include "accygwin.h"
 188
 189#elif defined(WIN32)
 190#include "acwin.h"
 191
 192#elif defined(WIN64)
 193#include "acwin64.h"
 194
 195#elif defined(_WRS_LIB_BUILD)
 196#include "acvxworks.h"
 197
 198#elif defined(__OS2__)
 199#include "acos2.h"
 200
 201#elif defined(__HAIKU__)
 202#include "achaiku.h"
 203
 204#elif defined(__QNX__)
 205#include "acqnx.h"
 206
 207/*
 208 * EFI applications can be built with -nostdlib, in this case, it must be
 209 * included after including all other host environmental definitions, in
 210 * order to override the definitions.
 211 */
 212#elif defined(_AED_EFI) || defined(_GNU_EFI) || defined(_EDK2_EFI)
 213#include "acefi.h"
 214
 215#else
 216
 217/* Unknown environment */
 218
 219#error Unknown target environment
 220#endif
 221
 222/*! [End] no source code translation !*/
 223
 224/******************************************************************************
 225 *
 226 * Setup defaults for the required symbols that were not defined in one of
 227 * the host/compiler files above.
 228 *
 229 *****************************************************************************/
 230
 231/* 64-bit data types */
 232
 233#ifndef COMPILER_DEPENDENT_INT64
 234#define COMPILER_DEPENDENT_INT64   long long
 235#endif
 236
 237#ifndef COMPILER_DEPENDENT_UINT64
 238#define COMPILER_DEPENDENT_UINT64  unsigned long long
 239#endif
 240
 241/* Type of mutex supported by host. Default is binary semaphores. */
 242#ifndef ACPI_MUTEX_TYPE
 243#define ACPI_MUTEX_TYPE             ACPI_BINARY_SEMAPHORE
 244#endif
 245
 246/* Global Lock acquire/release */
 247
 248#ifndef ACPI_ACQUIRE_GLOBAL_LOCK
 249#define ACPI_ACQUIRE_GLOBAL_LOCK(Glptr, acquired) acquired = 1
 250#endif
 251
 252#ifndef ACPI_RELEASE_GLOBAL_LOCK
 253#define ACPI_RELEASE_GLOBAL_LOCK(Glptr, pending) pending = 0
 254#endif
 255
 256/* Flush CPU cache - used when going to sleep. Wbinvd or similar. */
 257
 258#ifndef ACPI_FLUSH_CPU_CACHE
 259#define ACPI_FLUSH_CPU_CACHE()
 260#endif
 261
 262/* "inline" keywords - configurable since inline is not standardized */
 263
 264#ifndef ACPI_INLINE
 265#define ACPI_INLINE
 266#endif
 267
 268/* Use ordered initialization if compiler doesn't support designated. */
 269#ifndef ACPI_STRUCT_INIT
 270#define ACPI_STRUCT_INIT(field, value)  value
 271#endif
 272
 273/*
 274 * Configurable calling conventions:
 275 *
 276 * ACPI_SYSTEM_XFACE        - Interfaces to host OS (handlers, threads)
 277 * ACPI_EXTERNAL_XFACE      - External ACPI interfaces
 278 * ACPI_INTERNAL_XFACE      - Internal ACPI interfaces
 279 * ACPI_INTERNAL_VAR_XFACE  - Internal variable-parameter list interfaces
 280 */
 281#ifndef ACPI_SYSTEM_XFACE
 282#define ACPI_SYSTEM_XFACE
 283#endif
 284
 285#ifndef ACPI_EXTERNAL_XFACE
 286#define ACPI_EXTERNAL_XFACE
 287#endif
 288
 289#ifndef ACPI_INTERNAL_XFACE
 290#define ACPI_INTERNAL_XFACE
 291#endif
 292
 293#ifndef ACPI_INTERNAL_VAR_XFACE
 294#define ACPI_INTERNAL_VAR_XFACE
 295#endif
 296
 297/*
 298 * Debugger threading model
 299 * Use single threaded if the entire subsystem is contained in an application
 300 * Use multiple threaded when the subsystem is running in the kernel.
 301 *
 302 * By default the model is single threaded if ACPI_APPLICATION is set,
 303 * multi-threaded if ACPI_APPLICATION is not set.
 304 */
 305#ifndef DEBUGGER_THREADING
 306#if !defined (ACPI_APPLICATION) || defined (ACPI_EXEC_APP)
 307#define DEBUGGER_THREADING          DEBUGGER_MULTI_THREADED
 308
 309#else
 310#define DEBUGGER_THREADING          DEBUGGER_SINGLE_THREADED
 311#endif
 312#endif                          /* !DEBUGGER_THREADING */
 313
 314/******************************************************************************
 315 *
 316 * C library configuration
 317 *
 318 *****************************************************************************/
 319
 320/*
 321 * ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library.
 322 *      Otherwise, local versions of string/memory functions will be used.
 323 * ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and
 324 *      the standard header files may be used. Defining this implies that
 325 *      ACPI_USE_SYSTEM_CLIBRARY has been defined.
 326 *
 327 * The ACPICA subsystem only uses low level C library functions that do not
 328 * call operating system services and may therefore be inlined in the code.
 329 *
 330 * It may be necessary to tailor these include files to the target
 331 * generation environment.
 332 */
 333
 334/* Use the standard C library headers. We want to keep these to a minimum. */
 335
 336#ifdef ACPI_USE_STANDARD_HEADERS
 337
 338/* Use the standard headers from the standard locations */
 339
 340#include <stdlib.h>
 341#include <string.h>
 342#include <ctype.h>
 343#if defined (ACPI_APPLICATION) || defined(ACPI_LIBRARY)
 344#include <stdio.h>
 345#include <fcntl.h>
 346#include <errno.h>
 347#include <time.h>
 348#include <signal.h>
 349#endif
 350
 351#endif                          /* ACPI_USE_STANDARD_HEADERS */
 352
 353#ifdef ACPI_APPLICATION
 354#define ACPI_FILE              FILE *
 355#define ACPI_FILE_OUT          stdout
 356#define ACPI_FILE_ERR          stderr
 357#else
 358#define ACPI_FILE              void *
 359#define ACPI_FILE_OUT          NULL
 360#define ACPI_FILE_ERR          NULL
 361#endif                          /* ACPI_APPLICATION */
 362
 363#ifndef ACPI_INIT_FUNCTION
 364#define ACPI_INIT_FUNCTION
 365#endif
 366
 367#endif                          /* __ACENV_H__ */
 368