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 - 2019, 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/*! [Begin] no source code translation */
 132
 133/******************************************************************************
 134 *
 135 * Host configuration files. The compiler configuration files are included
 136 * first.
 137 *
 138 *****************************************************************************/
 139
 140#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
 141#include <acpi/platform/acgcc.h>
 142
 143#elif defined(_MSC_VER)
 144#include "acmsvc.h"
 145
 146#elif defined(__INTEL_COMPILER)
 147#include <acpi/platform/acintel.h>
 148
 149#endif
 150
 151#if defined(_LINUX) || defined(__linux__)
 152#include <acpi/platform/aclinux.h>
 153
 154#elif defined(_APPLE) || defined(__APPLE__)
 155#include "acmacosx.h"
 156
 157#elif defined(__DragonFly__)
 158#include "acdragonfly.h"
 159
 160#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 161#include "acfreebsd.h"
 162
 163#elif defined(__NetBSD__)
 164#include "acnetbsd.h"
 165
 166#elif defined(__sun)
 167#include "acsolaris.h"
 168
 169#elif defined(MODESTO)
 170#include "acmodesto.h"
 171
 172#elif defined(NETWARE)
 173#include "acnetware.h"
 174
 175#elif defined(_CYGWIN)
 176#include "accygwin.h"
 177
 178#elif defined(WIN32)
 179#include "acwin.h"
 180
 181#elif defined(WIN64)
 182#include "acwin64.h"
 183
 184#elif defined(_WRS_LIB_BUILD)
 185#include "acvxworks.h"
 186
 187#elif defined(__OS2__)
 188#include "acos2.h"
 189
 190#elif defined(__HAIKU__)
 191#include "achaiku.h"
 192
 193#elif defined(__QNX__)
 194#include "acqnx.h"
 195
 196/*
 197 * EFI applications can be built with -nostdlib, in this case, it must be
 198 * included after including all other host environmental definitions, in
 199 * order to override the definitions.
 200 */
 201#elif defined(_AED_EFI) || defined(_GNU_EFI) || defined(_EDK2_EFI)
 202#include "acefi.h"
 203
 204#else
 205
 206/* Unknown environment */
 207
 208#error Unknown target environment
 209#endif
 210
 211/*! [End] no source code translation !*/
 212
 213/******************************************************************************
 214 *
 215 * Setup defaults for the required symbols that were not defined in one of
 216 * the host/compiler files above.
 217 *
 218 *****************************************************************************/
 219
 220/* 64-bit data types */
 221
 222#ifndef COMPILER_DEPENDENT_INT64
 223#define COMPILER_DEPENDENT_INT64   long long
 224#endif
 225
 226#ifndef COMPILER_DEPENDENT_UINT64
 227#define COMPILER_DEPENDENT_UINT64  unsigned long long
 228#endif
 229
 230/* Type of mutex supported by host. Default is binary semaphores. */
 231#ifndef ACPI_MUTEX_TYPE
 232#define ACPI_MUTEX_TYPE             ACPI_BINARY_SEMAPHORE
 233#endif
 234
 235/* Global Lock acquire/release */
 236
 237#ifndef ACPI_ACQUIRE_GLOBAL_LOCK
 238#define ACPI_ACQUIRE_GLOBAL_LOCK(Glptr, acquired) acquired = 1
 239#endif
 240
 241#ifndef ACPI_RELEASE_GLOBAL_LOCK
 242#define ACPI_RELEASE_GLOBAL_LOCK(Glptr, pending) pending = 0
 243#endif
 244
 245/* Flush CPU cache - used when going to sleep. Wbinvd or similar. */
 246
 247#ifndef ACPI_FLUSH_CPU_CACHE
 248#define ACPI_FLUSH_CPU_CACHE()
 249#endif
 250
 251/* "inline" keywords - configurable since inline is not standardized */
 252
 253#ifndef ACPI_INLINE
 254#define ACPI_INLINE
 255#endif
 256
 257/* Use ordered initialization if compiler doesn't support designated. */
 258#ifndef ACPI_STRUCT_INIT
 259#define ACPI_STRUCT_INIT(field, value)  value
 260#endif
 261
 262/*
 263 * Configurable calling conventions:
 264 *
 265 * ACPI_SYSTEM_XFACE        - Interfaces to host OS (handlers, threads)
 266 * ACPI_EXTERNAL_XFACE      - External ACPI interfaces
 267 * ACPI_INTERNAL_XFACE      - Internal ACPI interfaces
 268 * ACPI_INTERNAL_VAR_XFACE  - Internal variable-parameter list interfaces
 269 */
 270#ifndef ACPI_SYSTEM_XFACE
 271#define ACPI_SYSTEM_XFACE
 272#endif
 273
 274#ifndef ACPI_EXTERNAL_XFACE
 275#define ACPI_EXTERNAL_XFACE
 276#endif
 277
 278#ifndef ACPI_INTERNAL_XFACE
 279#define ACPI_INTERNAL_XFACE
 280#endif
 281
 282#ifndef ACPI_INTERNAL_VAR_XFACE
 283#define ACPI_INTERNAL_VAR_XFACE
 284#endif
 285
 286/*
 287 * Debugger threading model
 288 * Use single threaded if the entire subsystem is contained in an application
 289 * Use multiple threaded when the subsystem is running in the kernel.
 290 *
 291 * By default the model is single threaded if ACPI_APPLICATION is set,
 292 * multi-threaded if ACPI_APPLICATION is not set.
 293 */
 294#ifndef DEBUGGER_THREADING
 295#if !defined (ACPI_APPLICATION) || defined (ACPI_EXEC_APP)
 296#define DEBUGGER_THREADING          DEBUGGER_MULTI_THREADED
 297
 298#else
 299#define DEBUGGER_THREADING          DEBUGGER_SINGLE_THREADED
 300#endif
 301#endif                          /* !DEBUGGER_THREADING */
 302
 303/******************************************************************************
 304 *
 305 * C library configuration
 306 *
 307 *****************************************************************************/
 308
 309/*
 310 * ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library.
 311 *      Otherwise, local versions of string/memory functions will be used.
 312 * ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and
 313 *      the standard header files may be used. Defining this implies that
 314 *      ACPI_USE_SYSTEM_CLIBRARY has been defined.
 315 *
 316 * The ACPICA subsystem only uses low level C library functions that do not
 317 * call operating system services and may therefore be inlined in the code.
 318 *
 319 * It may be necessary to tailor these include files to the target
 320 * generation environment.
 321 */
 322
 323/* Use the standard C library headers. We want to keep these to a minimum. */
 324
 325#ifdef ACPI_USE_STANDARD_HEADERS
 326
 327/* Use the standard headers from the standard locations */
 328
 329#include <stdlib.h>
 330#include <string.h>
 331#include <ctype.h>
 332#if defined (ACPI_APPLICATION) || defined(ACPI_LIBRARY)
 333#include <stdio.h>
 334#include <fcntl.h>
 335#include <errno.h>
 336#include <time.h>
 337#include <signal.h>
 338#endif
 339
 340#endif                          /* ACPI_USE_STANDARD_HEADERS */
 341
 342#ifdef ACPI_APPLICATION
 343#define ACPI_FILE              FILE *
 344#define ACPI_FILE_OUT          stdout
 345#define ACPI_FILE_ERR          stderr
 346#else
 347#define ACPI_FILE              void *
 348#define ACPI_FILE_OUT          NULL
 349#define ACPI_FILE_ERR          NULL
 350#endif                          /* ACPI_APPLICATION */
 351
 352#ifndef ACPI_INIT_FUNCTION
 353#define ACPI_INIT_FUNCTION
 354#endif
 355
 356#endif                          /* __ACENV_H__ */
 357