acenv.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:8k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /******************************************************************************
  2.  *
  3.  * Name: acenv.h - Generation environment specific items
  4.  *       $Revision: 77 $
  5.  *
  6.  *****************************************************************************/
  7. /*
  8.  *  Copyright (C) 2000, 2001 R. Byron Moore
  9.  *
  10.  *  This program is free software; you can redistribute it and/or modify
  11.  *  it under the terms of the GNU General Public License as published by
  12.  *  the Free Software Foundation; either version 2 of the License, or
  13.  *  (at your option) any later version.
  14.  *
  15.  *  This program is distributed in the hope that it will be useful,
  16.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  *  GNU General Public License for more details.
  19.  *
  20.  *  You should have received a copy of the GNU General Public License
  21.  *  along with this program; if not, write to the Free Software
  22.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  23.  */
  24. #ifndef __ACENV_H__
  25. #define __ACENV_H__
  26. /*
  27.  * Configuration for ACPI tools and utilities
  28.  */
  29. #ifdef _ACPI_DUMP_APP
  30. #define ACPI_DEBUG
  31. #define ACPI_APPLICATION
  32. #define ENABLE_DEBUGGER
  33. #define ACPI_USE_SYSTEM_CLIBRARY
  34. #define PARSER_ONLY
  35. #endif
  36. #ifdef _ACPI_EXEC_APP
  37. #undef DEBUGGER_THREADING
  38. #define DEBUGGER_THREADING      DEBUGGER_SINGLE_THREADED
  39. #define ACPI_DEBUG
  40. #define ACPI_APPLICATION
  41. #define ENABLE_DEBUGGER
  42. #define ACPI_USE_SYSTEM_CLIBRARY
  43. #endif
  44. #ifdef _ACPI_ASL_COMPILER
  45. #define ACPI_DEBUG
  46. #define ACPI_APPLICATION
  47. #define ENABLE_DEBUGGER
  48. #define ACPI_USE_SYSTEM_CLIBRARY
  49. #endif
  50. /*
  51.  * Memory allocation tracking.  Used only if
  52.  * 1) This is the debug version
  53.  * 2) This is NOT a 16-bit version of the code (not enough real-mode memory)
  54.  */
  55. #ifdef ACPI_DEBUG
  56. #ifndef _IA16
  57. #define ACPI_DBG_TRACK_ALLOCATIONS
  58. #endif
  59. #endif
  60. /*
  61.  * Environment configuration.  The purpose of this file is to interface to the
  62.  * local generation environment.
  63.  *
  64.  * 1) ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library.
  65.  *      Otherwise, local versions of string/memory functions will be used.
  66.  * 2) ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and
  67.  *      the standard header files may be used.
  68.  *
  69.  * The ACPI subsystem only uses low level C library functions that do not call
  70.  * operating system services and may therefore be inlined in the code.
  71.  *
  72.  * It may be necessary to tailor these include files to the target
  73.  * generation environment.
  74.  *
  75.  *
  76.  * Functions and constants used from each header:
  77.  *
  78.  * string.h:    memcpy
  79.  *              memset
  80.  *              strcat
  81.  *              strcmp
  82.  *              strcpy
  83.  *              strlen
  84.  *              strncmp
  85.  *              strncat
  86.  *              strncpy
  87.  *
  88.  * stdlib.h:    strtoul
  89.  *
  90.  * stdarg.h:    va_list
  91.  *              va_arg
  92.  *              va_start
  93.  *              va_end
  94.  *
  95.  */
  96. /*! [Begin] no source code translation */
  97. #ifdef _LINUX
  98. #include "aclinux.h"
  99. #elif _AED_EFI
  100. #include "acefi.h"
  101. #elif WIN32
  102. #include "acwin.h"
  103. #elif __FreeBSD__
  104. #include "acfreebsd.h"
  105. #else
  106. /* All other environments */
  107. #define ACPI_USE_STANDARD_HEADERS
  108. /* Name of host operating system (returned by the _OS_ namespace object) */
  109. #define ACPI_OS_NAME         "Intel ACPI/CA Core Subsystem"
  110. /* This macro is used to tag functions as "printf-like" because
  111.  * some compilers can catch printf format string problems. MSVC
  112.  * doesn't, so this is proprocessed away.
  113.  */
  114. #define ACPI_PRINTF_LIKE_FUNC
  115. #endif
  116. /*! [End] no source code translation !*/
  117. /******************************************************************************
  118.  *
  119.  * C library configuration
  120.  *
  121.  *****************************************************************************/
  122. #ifdef ACPI_USE_SYSTEM_CLIBRARY
  123. /*
  124.  * Use the standard C library headers.
  125.  * We want to keep these to a minimum.
  126.  *
  127.  */
  128. #ifdef ACPI_USE_STANDARD_HEADERS
  129. /*
  130.  * Use the standard headers from the standard locations
  131.  */
  132. #include <stdarg.h>
  133. #include <stdlib.h>
  134. #include <string.h>
  135. #include <ctype.h>
  136. #endif /* ACPI_USE_STANDARD_HEADERS */
  137. /*
  138.  * We will be linking to the standard Clib functions
  139.  */
  140. #define STRSTR(s1,s2)   strstr((s1), (s2))
  141. #define STRUPR(s)       acpi_ut_strupr ((s))
  142. #define STRLEN(s)       (u32) strlen((s))
  143. #define STRCPY(d,s)     strcpy((d), (s))
  144. #define STRNCPY(d,s,n)  strncpy((d), (s), (NATIVE_INT)(n))
  145. #define STRNCMP(d,s,n)  strncmp((d), (s), (NATIVE_INT)(n))
  146. #define STRCMP(d,s)     strcmp((d), (s))
  147. #define STRCAT(d,s)     strcat((d), (s))
  148. #define STRNCAT(d,s,n)  strncat((d), (s), (NATIVE_INT)(n))
  149. #define STRTOUL(d,s,n)  strtoul((d), (s), (NATIVE_INT)(n))
  150. #define MEMCPY(d,s,n)   memcpy((d), (s), (NATIVE_INT)(n))
  151. #define MEMSET(d,s,n)   memset((d), (s), (NATIVE_INT)(n))
  152. #define TOUPPER         toupper
  153. #define TOLOWER         tolower
  154. #define IS_XDIGIT       isxdigit
  155. /******************************************************************************
  156.  *
  157.  * Not using native C library, use local implementations
  158.  *
  159.  *****************************************************************************/
  160. #else
  161. /*
  162.  * Use local definitions of C library macros and functions
  163.  * NOTE: The function implementations may not be as efficient
  164.  * as an inline or assembly code implementation provided by a
  165.  * native C library.
  166.  */
  167. #ifndef va_arg
  168. #ifndef _VALIST
  169. #define _VALIST
  170. typedef char *va_list;
  171. #endif /* _VALIST */
  172. /*
  173.  * Storage alignment properties
  174.  */
  175. #define  _AUPBND         (sizeof (NATIVE_INT) - 1)
  176. #define  _ADNBND         (sizeof (NATIVE_INT) - 1)
  177. /*
  178.  * Variable argument list macro definitions
  179.  */
  180. #define _bnd(X, bnd)    (((sizeof (X)) + (bnd)) & (~(bnd)))
  181. #define va_arg(ap, T)   (*(T *)(((ap) += (_bnd (T, _AUPBND))) - (_bnd (T,_ADNBND))))
  182. #define va_end(ap)      (void) 0
  183. #define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND))))
  184. #endif /* va_arg */
  185. #define STRSTR(s1,s2)    acpi_ut_strstr ((s1), (s2))
  186. #define STRUPR(s)        acpi_ut_strupr ((s))
  187. #define STRLEN(s)        acpi_ut_strlen ((s))
  188. #define STRCPY(d,s)      acpi_ut_strcpy ((d), (s))
  189. #define STRNCPY(d,s,n)   acpi_ut_strncpy ((d), (s), (n))
  190. #define STRNCMP(d,s,n)   acpi_ut_strncmp ((d), (s), (n))
  191. #define STRCMP(d,s)      acpi_ut_strcmp ((d), (s))
  192. #define STRCAT(d,s)      acpi_ut_strcat ((d), (s))
  193. #define STRNCAT(d,s,n)   acpi_ut_strncat ((d), (s), (n))
  194. #define STRTOUL(d,s,n)   acpi_ut_strtoul ((d), (s),(n))
  195. #define MEMCPY(d,s,n)    acpi_ut_memcpy ((d), (s), (n))
  196. #define MEMSET(d,v,n)    acpi_ut_memset ((d), (v), (n))
  197. #define TOUPPER          acpi_ut_to_upper
  198. #define TOLOWER          acpi_ut_to_lower
  199. #endif /* ACPI_USE_SYSTEM_CLIBRARY */
  200. /******************************************************************************
  201.  *
  202.  * Assembly code macros
  203.  *
  204.  *****************************************************************************/
  205. /*
  206.  * Handle platform- and compiler-specific assembly language differences.
  207.  * These should already have been defined by the platform includes above.
  208.  *
  209.  * Notes:
  210.  * 1) Interrupt 3 is used to break into a debugger
  211.  * 2) Interrupts are turned off during ACPI register setup
  212.  */
  213. /* Unrecognized compiler, use defaults */
  214. #ifndef ACPI_ASM_MACROS
  215. #define ACPI_ASM_MACROS
  216. #define causeinterrupt(level)
  217. #define BREAKPOINT3
  218. #define disable()
  219. #define enable()
  220. #define halt()
  221. #define ACPI_ACQUIRE_GLOBAL_LOCK(Glptr, acq)
  222. #define ACPI_RELEASE_GLOBAL_LOCK(Glptr, acq)
  223. #endif /* ACPI_ASM_MACROS */
  224. #ifdef ACPI_APPLICATION
  225. /* Don't want software interrupts within a ring3 application */
  226. #undef causeinterrupt
  227. #undef BREAKPOINT3
  228. #define causeinterrupt(level)
  229. #define BREAKPOINT3
  230. #endif
  231. /******************************************************************************
  232.  *
  233.  * Compiler-specific
  234.  *
  235.  *****************************************************************************/
  236. /* this has been moved to compiler-specific headers, which are included from the
  237.    platform header. */
  238. #endif /* __ACENV_H__ */