home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / acpi / platform / acenv.h next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  11.1 KB  |  364 lines

  1. /******************************************************************************
  2.  *
  3.  * Name: acenv.h - Generation environment specific items
  4.  *
  5.  *****************************************************************************/
  6.  
  7. /*
  8.  * Copyright (C) 2000 - 2008, Intel Corp.
  9.  * All rights reserved.
  10.  *
  11.  * Redistribution and use in source and binary forms, with or without
  12.  * modification, are permitted provided that the following conditions
  13.  * are met:
  14.  * 1. Redistributions of source code must retain the above copyright
  15.  *    notice, this list of conditions, and the following disclaimer,
  16.  *    without modification.
  17.  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
  18.  *    substantially similar to the "NO WARRANTY" disclaimer below
  19.  *    ("Disclaimer") and any redistribution must be conditioned upon
  20.  *    including a substantially similar Disclaimer requirement for further
  21.  *    binary redistribution.
  22.  * 3. Neither the names of the above-listed copyright holders nor the names
  23.  *    of any contributors may be used to endorse or promote products derived
  24.  *    from this software without specific prior written permission.
  25.  *
  26.  * Alternatively, this software may be distributed under the terms of the
  27.  * GNU General Public License ("GPL") version 2 as published by the Free
  28.  * Software Foundation.
  29.  *
  30.  * NO WARRANTY
  31.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  32.  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  33.  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
  34.  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  35.  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  36.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  37.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  38.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  39.  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  40.  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  41.  * POSSIBILITY OF SUCH DAMAGES.
  42.  */
  43.  
  44. #ifndef __ACENV_H__
  45. #define __ACENV_H__
  46.  
  47. /*
  48.  * Configuration for ACPI tools and utilities
  49.  */
  50.  
  51. #ifdef ACPI_LIBRARY
  52. /*
  53.  * Note: The non-debug version of the acpi_library does not contain any
  54.  * debug support, for minimimal size. The debug version uses ACPI_FULL_DEBUG
  55.  */
  56. #define ACPI_USE_LOCAL_CACHE
  57. #endif
  58.  
  59. #ifdef ACPI_ASL_COMPILER
  60. #define ACPI_DEBUG_OUTPUT
  61. #define ACPI_APPLICATION
  62. #define ACPI_DISASSEMBLER
  63. #define ACPI_CONSTANT_EVAL_ONLY
  64. #define ACPI_LARGE_NAMESPACE_NODE
  65. #define ACPI_DATA_TABLE_DISASSEMBLY
  66. #endif
  67.  
  68. #ifdef ACPI_EXEC_APP
  69. #undef DEBUGGER_THREADING
  70. #define DEBUGGER_THREADING      DEBUGGER_SINGLE_THREADED
  71. #define ACPI_FULL_DEBUG
  72. #define ACPI_APPLICATION
  73. #define ACPI_DEBUGGER
  74. #define ACPI_MUTEX_DEBUG
  75. #define ACPI_DBG_TRACK_ALLOCATIONS
  76. #endif
  77.  
  78. #ifdef ACPI_DASM_APP
  79. #ifndef MSDOS
  80. #define ACPI_DEBUG_OUTPUT
  81. #endif
  82. #define ACPI_APPLICATION
  83. #define ACPI_DISASSEMBLER
  84. #define ACPI_NO_METHOD_EXECUTION
  85. #define ACPI_LARGE_NAMESPACE_NODE
  86. #define ACPI_DATA_TABLE_DISASSEMBLY
  87. #endif
  88.  
  89. #ifdef ACPI_APPLICATION
  90. #define ACPI_USE_SYSTEM_CLIBRARY
  91. #define ACPI_USE_LOCAL_CACHE
  92. #endif
  93.  
  94. #ifdef ACPI_FULL_DEBUG
  95. #define ACPI_DEBUGGER
  96. #define ACPI_DEBUG_OUTPUT
  97. #define ACPI_DISASSEMBLER
  98. #endif
  99.  
  100. /*
  101.  * Environment configuration.  The purpose of this file is to interface to the
  102.  * local generation environment.
  103.  *
  104.  * 1) ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library.
  105.  *      Otherwise, local versions of string/memory functions will be used.
  106.  * 2) ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and
  107.  *      the standard header files may be used.
  108.  *
  109.  * The ACPI subsystem only uses low level C library functions that do not call
  110.  * operating system services and may therefore be inlined in the code.
  111.  *
  112.  * It may be necessary to tailor these include files to the target
  113.  * generation environment.
  114.  *
  115.  *
  116.  * Functions and constants used from each header:
  117.  *
  118.  * string.h:    memcpy
  119.  *              memset
  120.  *              strcat
  121.  *              strcmp
  122.  *              strcpy
  123.  *              strlen
  124.  *              strncmp
  125.  *              strncat
  126.  *              strncpy
  127.  *
  128.  * stdlib.h:    strtoul
  129.  *
  130.  * stdarg.h:    va_list
  131.  *              va_arg
  132.  *              va_start
  133.  *              va_end
  134.  *
  135.  */
  136.  
  137. /*! [Begin] no source code translation */
  138.  
  139. #if defined(_LINUX) || defined(__linux__)
  140. #include "aclinux.h"
  141.  
  142. #elif defined(_AED_EFI)
  143. #include "acefi.h"
  144.  
  145. #elif defined(WIN32)
  146. #include "acwin.h"
  147.  
  148. #elif defined(WIN64)
  149. #include "acwin64.h"
  150.  
  151. #elif defined(MSDOS)        /* Must appear after WIN32 and WIN64 check */
  152. #include "acdos16.h"
  153.  
  154. #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
  155. #include "acfreebsd.h"
  156.  
  157. #elif defined(__NetBSD__)
  158. #include "acnetbsd.h"
  159.  
  160. #elif defined(MODESTO)
  161. #include "acmodesto.h"
  162.  
  163. #elif defined(NETWARE)
  164. #include "acnetware.h"
  165.  
  166. #elif defined(__sun)
  167. #include "acsolaris.h"
  168.  
  169. #else
  170.  
  171. /* All other environments */
  172.  
  173. #define ACPI_USE_STANDARD_HEADERS
  174.  
  175. #define COMPILER_DEPENDENT_INT64   long long
  176. #define COMPILER_DEPENDENT_UINT64  unsigned long long
  177.  
  178. #endif
  179.  
  180. /*! [End] no source code translation !*/
  181.  
  182. /*
  183.  * Debugger threading model
  184.  * Use single threaded if the entire subsystem is contained in an application
  185.  * Use multiple threaded when the subsystem is running in the kernel.
  186.  *
  187.  * By default the model is single threaded if ACPI_APPLICATION is set,
  188.  * multi-threaded if ACPI_APPLICATION is not set.
  189.  */
  190. #define DEBUGGER_SINGLE_THREADED    0
  191. #define DEBUGGER_MULTI_THREADED     1
  192.  
  193. #ifndef DEBUGGER_THREADING
  194. #ifdef ACPI_APPLICATION
  195. #define DEBUGGER_THREADING          DEBUGGER_SINGLE_THREADED
  196.  
  197. #else
  198. #define DEBUGGER_THREADING          DEBUGGER_MULTI_THREADED
  199. #endif
  200. #endif                /* !DEBUGGER_THREADING */
  201.  
  202. /******************************************************************************
  203.  *
  204.  * C library configuration
  205.  *
  206.  *****************************************************************************/
  207.  
  208. #define ACPI_IS_ASCII(c)  ((c) < 0x80)
  209.  
  210. #ifdef ACPI_USE_SYSTEM_CLIBRARY
  211. /*
  212.  * Use the standard C library headers.
  213.  * We want to keep these to a minimum.
  214.  */
  215. #ifdef ACPI_USE_STANDARD_HEADERS
  216. /*
  217.  * Use the standard headers from the standard locations
  218.  */
  219. #include <stdarg.h>
  220. #include <stdlib.h>
  221. #include <string.h>
  222. #include <ctype.h>
  223.  
  224. #endif                /* ACPI_USE_STANDARD_HEADERS */
  225.  
  226. /*
  227.  * We will be linking to the standard Clib functions
  228.  */
  229. #define ACPI_STRSTR(s1,s2)      strstr((s1), (s2))
  230. #define ACPI_STRCHR(s1,c)       strchr((s1), (c))
  231. #define ACPI_STRLEN(s)          (acpi_size) strlen((s))
  232. #define ACPI_STRCPY(d,s)        (void) strcpy((d), (s))
  233. #define ACPI_STRNCPY(d,s,n)     (void) strncpy((d), (s), (acpi_size)(n))
  234. #define ACPI_STRNCMP(d,s,n)     strncmp((d), (s), (acpi_size)(n))
  235. #define ACPI_STRCMP(d,s)        strcmp((d), (s))
  236. #define ACPI_STRCAT(d,s)        (void) strcat((d), (s))
  237. #define ACPI_STRNCAT(d,s,n)     strncat((d), (s), (acpi_size)(n))
  238. #define ACPI_STRTOUL(d,s,n)     strtoul((d), (s), (acpi_size)(n))
  239. #define ACPI_MEMCMP(s1,s2,n)    memcmp((const char *)(s1), (const char *)(s2), (acpi_size)(n))
  240. #define ACPI_MEMCPY(d,s,n)      (void) memcpy((d), (s), (acpi_size)(n))
  241. #define ACPI_MEMSET(d,s,n)      (void) memset((d), (s), (acpi_size)(n))
  242.  
  243. #define ACPI_TOUPPER(i)         toupper((int) (i))
  244. #define ACPI_TOLOWER(i)         tolower((int) (i))
  245. #define ACPI_IS_XDIGIT(i)       isxdigit((int) (i))
  246. #define ACPI_IS_DIGIT(i)        isdigit((int) (i))
  247. #define ACPI_IS_SPACE(i)        isspace((int) (i))
  248. #define ACPI_IS_UPPER(i)        isupper((int) (i))
  249. #define ACPI_IS_PRINT(i)        isprint((int) (i))
  250. #define ACPI_IS_ALPHA(i)        isalpha((int) (i))
  251.  
  252. #else
  253.  
  254. /******************************************************************************
  255.  *
  256.  * Not using native C library, use local implementations
  257.  *
  258.  *****************************************************************************/
  259.  
  260.  /*
  261.   * Use local definitions of C library macros and functions
  262.   * NOTE: The function implementations may not be as efficient
  263.   * as an inline or assembly code implementation provided by a
  264.   * native C library.
  265.   */
  266.  
  267. #ifndef va_arg
  268.  
  269. #ifndef _VALIST
  270. #define _VALIST
  271. typedef char *va_list;
  272. #endif                /* _VALIST */
  273.  
  274. /*
  275.  * Storage alignment properties
  276.  */
  277. #define  _AUPBND                (sizeof (acpi_native_int) - 1)
  278. #define  _ADNBND                (sizeof (acpi_native_int) - 1)
  279.  
  280. /*
  281.  * Variable argument list macro definitions
  282.  */
  283. #define _bnd(X, bnd)            (((sizeof (X)) + (bnd)) & (~(bnd)))
  284. #define va_arg(ap, T)           (*(T *)(((ap) += (_bnd (T, _AUPBND))) - (_bnd (T,_ADNBND))))
  285. #define va_end(ap)              (void) 0
  286. #define va_start(ap, A)         (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND))))
  287.  
  288. #endif                /* va_arg */
  289.  
  290. #define ACPI_STRSTR(s1,s2)      acpi_ut_strstr ((s1), (s2))
  291. #define ACPI_STRCHR(s1,c)       acpi_ut_strchr ((s1), (c))
  292. #define ACPI_STRLEN(s)          (acpi_size) acpi_ut_strlen ((s))
  293. #define ACPI_STRCPY(d,s)        (void) acpi_ut_strcpy ((d), (s))
  294. #define ACPI_STRNCPY(d,s,n)     (void) acpi_ut_strncpy ((d), (s), (acpi_size)(n))
  295. #define ACPI_STRNCMP(d,s,n)     acpi_ut_strncmp ((d), (s), (acpi_size)(n))
  296. #define ACPI_STRCMP(d,s)        acpi_ut_strcmp ((d), (s))
  297. #define ACPI_STRCAT(d,s)        (void) acpi_ut_strcat ((d), (s))
  298. #define ACPI_STRNCAT(d,s,n)     acpi_ut_strncat ((d), (s), (acpi_size)(n))
  299. #define ACPI_STRTOUL(d,s,n)     acpi_ut_strtoul ((d), (s), (acpi_size)(n))
  300. #define ACPI_MEMCMP(s1,s2,n)    acpi_ut_memcmp((const char *)(s1), (const char *)(s2), (acpi_size)(n))
  301. #define ACPI_MEMCPY(d,s,n)      (void) acpi_ut_memcpy ((d), (s), (acpi_size)(n))
  302. #define ACPI_MEMSET(d,v,n)      (void) acpi_ut_memset ((d), (v), (acpi_size)(n))
  303. #define ACPI_TOUPPER            acpi_ut_to_upper
  304. #define ACPI_TOLOWER            acpi_ut_to_lower
  305.  
  306. #endif                /* ACPI_USE_SYSTEM_CLIBRARY */
  307.  
  308. /******************************************************************************
  309.  *
  310.  * Assembly code macros
  311.  *
  312.  *****************************************************************************/
  313.  
  314. /*
  315.  * Handle platform- and compiler-specific assembly language differences.
  316.  * These should already have been defined by the platform includes above.
  317.  *
  318.  * Notes:
  319.  * 1) Interrupt 3 is used to break into a debugger
  320.  * 2) Interrupts are turned off during ACPI register setup
  321.  */
  322.  
  323. /* Unrecognized compiler, use defaults */
  324.  
  325. #ifndef ACPI_ASM_MACROS
  326.  
  327. /*
  328.  * Calling conventions:
  329.  *
  330.  * ACPI_SYSTEM_XFACE        - Interfaces to host OS (handlers, threads)
  331.  * ACPI_EXTERNAL_XFACE      - External ACPI interfaces
  332.  * ACPI_INTERNAL_XFACE      - Internal ACPI interfaces
  333.  * ACPI_INTERNAL_VAR_XFACE  - Internal variable-parameter list interfaces
  334.  */
  335. #define ACPI_SYSTEM_XFACE
  336. #define ACPI_EXTERNAL_XFACE
  337. #define ACPI_INTERNAL_XFACE
  338. #define ACPI_INTERNAL_VAR_XFACE
  339.  
  340. #define ACPI_ASM_MACROS
  341. #define BREAKPOINT3
  342. #define ACPI_DISABLE_IRQS()
  343. #define ACPI_ENABLE_IRQS()
  344. #define ACPI_ACQUIRE_GLOBAL_LOCK(Glptr, acq)
  345. #define ACPI_RELEASE_GLOBAL_LOCK(Glptr, acq)
  346.  
  347. #endif                /* ACPI_ASM_MACROS */
  348.  
  349. #ifdef ACPI_APPLICATION
  350.  
  351. /* Don't want software interrupts within a ring3 application */
  352.  
  353. #undef BREAKPOINT3
  354. #define BREAKPOINT3
  355. #endif
  356.  
  357. /******************************************************************************
  358.  *
  359.  * Compiler-specific information is contained in the compiler-specific
  360.  * headers.
  361.  *
  362.  *****************************************************************************/
  363. #endif                /* __ACENV_H__ */
  364.