File: /usr/include/c++/4.2.1/bits/os_defines.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: // Specific definitions for Darwin -*- C++ -*-
       2: 
       3: // Copyright (C) 2004 Free Software Foundation, Inc.
       4: //
       5: // This file is part of the GNU ISO C++ Library.  This library is free
       6: // software; you can redistribute it and/or modify it under the
       7: // terms of the GNU General Public License as published by the
       8: // Free Software Foundation; either version 2, or (at your option)
       9: // any later version.
      10: 
      11: // This library is distributed in the hope that it will be useful,
      12: // but WITHOUT ANY WARRANTY; without even the implied warranty of
      13: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14: // GNU General Public License for more details.
      15: 
      16: // You should have received a copy of the GNU General Public License along
      17: // with this library; see the file COPYING.  If not, write to the Free
      18: // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
      19: // USA.
      20: 
      21: // As a special exception, you may use this file as part of a free software
      22: // library without restriction.  Specifically, if other files instantiate
      23: // templates or use macros or inline functions from this file, or you compile
      24: // this file and link it with other files to produce an executable, this
      25: // file does not by itself cause the resulting executable to be covered by
      26: // the GNU General Public License.  This exception does not however
      27: // invalidate any other reasons why the executable file might be covered by
      28: // the GNU General Public License.
      29: 
      30: 
      31: #ifndef _GLIBCXX_OS_DEFINES
      32: #define _GLIBCXX_OS_DEFINES 1
      33: 
      34: // System-specific #define, typedefs, corrections, etc, go here.  This
      35: // file will come before all others.
      36: 
      37: /* Darwin has the pthread routines in libSystem, which every program
      38:    links to, so there's no need for weak-ness for that.  */
      39: #define _GLIBCXX_GTHREAD_USE_WEAK 0
      40: 
      41: // On Darwin, in order to enable overriding of operator new and delete,
      42: // GCC makes the definition of these functions weak, relies on the
      43: // loader to implement weak semantics properly, and uses
      44: // -flat_namespace to work around the way that it doesn't.
      45: #define _GLIBCXX_WEAK_DEFINITION __attribute__ ((weak))
      46: 
      47: #ifndef _GLIBCXX_VISIBILITY_DEFAULT
      48: #define _GLIBCXX_VISIBILITY_DEFAULT /* _GLIBCXX_VISIBILITY(default) */
      49: #endif
      50: 
      51: /* APPLE LOCAL begin dtrace 6144676 */
      52: /* Enable dtrace probes.  */
      53: /* Inline copy of dtrace_cxa_runtime.h. */
      54: /*
      55:  * Generated by dtrace(1M).
      56:  */
      57: 
      58: #ifndef    _DTRACE_CXA_RUNTIME_H
      59: #define    _DTRACE_CXA_RUNTIME_H
      60: 
      61: #include <unistd.h>
      62: /* APPLE LOCAL begin version */
      63: #include <Availability.h>
      64: /* APPLE LOCAL end version */
      65: 
      66: #ifdef    __cplusplus
      67: extern "C" {
      68: #endif
      69: 
      70: #define CXA_RUNTIME_STABILITY "___dtrace_stability$cxa_runtime$v1$1_1_0_1_1_0_1_1_0_1_1_0_1_1_0"
      71: 
      72: #define CXA_RUNTIME_TYPEDEFS "___dtrace_typedefs$cxa_runtime$v2"
      73: 
      74: #define    CXA_RUNTIME_CXA_EXCEPTION_RETHROW() \
      75: do { \
      76:     __asm__ volatile(".reference " CXA_RUNTIME_TYPEDEFS); \
      77:     __dtrace_probe$cxa_runtime$cxa_exception_rethrow$v1(); \
      78:     __asm__ volatile(".reference " CXA_RUNTIME_STABILITY); \
      79: } while (0)
      80: #define    CXA_RUNTIME_CXA_EXCEPTION_RETHROW_ENABLED() \
      81:     __dtrace_isenabled$cxa_runtime$cxa_exception_rethrow$v1()
      82: #define    CXA_RUNTIME_CXA_EXCEPTION_THROW(arg0) \
      83: do { \
      84:     __asm__ volatile(".reference " CXA_RUNTIME_TYPEDEFS); \
      85:     __dtrace_probe$cxa_runtime$cxa_exception_throw$v1$766f6964202a(arg0); \
      86:     __asm__ volatile(".reference " CXA_RUNTIME_STABILITY); \
      87: } while (0)
      88: #define    CXA_RUNTIME_CXA_EXCEPTION_THROW_ENABLED() \
      89:     __dtrace_isenabled$cxa_runtime$cxa_exception_throw$v1()
      90: 
      91: 
      92: extern void __dtrace_probe$cxa_runtime$cxa_exception_rethrow$v1(void);
      93: extern int __dtrace_isenabled$cxa_runtime$cxa_exception_rethrow$v1(void);
      94: extern void __dtrace_probe$cxa_runtime$cxa_exception_throw$v1$766f6964202a(void *);
      95: extern int __dtrace_isenabled$cxa_runtime$cxa_exception_throw$v1(void);
      96: 
      97: #ifdef    __cplusplus
      98: }
      99: #endif
     100: 
     101: #endif    /* _DTRACE_CXA_RUNTIME_H */
     102: /* APPLE LOCAL end dtrace 6144676 */
     103: 
     104: /* APPLE LOCAL begin version */
     105: 
     106: #ifndef __GNUC_LIBSTD__
     107: #define __GNUC_LIBSTD__ 4
     108: #define __GNUC_LIBSTD_MINOR__ 2
     109: #endif
     110: 
     111: #if __IPHONE_OS_VERSION_MIN_REQUIRED
     112:     #define __TARGETING_4_0_DYLIB  0
     113: #else 
     114:     #define __TARGETING_4_0_DYLIB (__MAC_OS_X_VERSION_MIN_REQUIRED < 1060)
     115: #endif
     116: 
     117: /* APPLE LOCAL end version */
     118: 
     119: /* APPLE LOCAL begin keymgr */
     120: #if defined(__APPLE__) && defined(__ppc__) && defined(PIC)
     121: /* Copyright (C) 1989, 92-97, 1998, Free Software Foundation, Inc.
     122: 
     123: This file is part of GNU CC.
     124: 
     125: GNU CC is free software; you can redistribute it and/or modify
     126: it under the terms of the GNU General Public License as published by
     127: the Free Software Foundation; either version 2, or (at your option)
     128: any later version.
     129: 
     130: GNU CC is distributed in the hope that it will be useful,
     131: but WITHOUT ANY WARRANTY; without even the implied warranty of
     132: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     133: GNU General Public License for more details.
     134: 
     135: You should have received a copy of the GNU General Public License
     136: along with GNU CC; see the file COPYING.  If not, write to
     137: the Free Software Foundation, 59 Temple Place - Suite 330,
     138: Boston, MA 02111-1307, USA.  */
     139: 
     140: 
     141: /*
     142:  * This file added by Apple Computer Inc. for its OS X 
     143:  * environment.
     144:  */
     145: 
     146: #ifndef __KEYMGR_H
     147: #define __KEYMGR_H
     148: 
     149: #ifdef __cplusplus
     150: extern "C" {
     151: #endif
     152: 
     153: 
     154: 
     155: /*
     156:  * keymgr - Create and maintain process-wide global data known to 
     157:  *        all threads across all dynamic libraries. 
     158:  *
     159:  */
     160:  
     161: typedef enum node_kinds {
     162:     NODE_THREAD_SPECIFIC_DATA=1,
     163:     NODE_PROCESSWIDE_PTR=2,
     164:     NODE_LAST_KIND
     165:     } TnodeKind ;
     166:     
     167: /*
     168:  * These enum members are bits or combination of bits.
     169:  */
     170:     
     171: typedef enum node_mode {
     172:     NM_ALLOW_RECURSION=1,
     173:     NM_RECURSION_ILLEGAL=2,
     174:     NM_ENHANCED_LOCKING=3,
     175:     NM_LOCKED=4
     176:     } TnodeMode ;
     177: 
     178: /* WARNING: the return value of _keymgr_set_per_thread_data is 
     179:    not meaningful on Tiger and above.  Use the macro
     180:    KEYMGR_SET_PER_THREAD_DATA (below) to handle this properly. */
     181: extern void * _keymgr_get_per_thread_data(unsigned int key) ;
     182: extern int _keymgr_set_per_thread_data(unsigned int key, void *keydata) ;
     183: extern void *_keymgr_get_and_lock_processwide_ptr(unsigned int key) ;
     184: extern void _keymgr_set_and_unlock_processwide_ptr(unsigned int key, void *ptr) ;
     185: extern void _keymgr_unlock_processwide_ptr(unsigned int key) ;
     186: extern void _keymgr_set_lockmode_processwide_ptr(unsigned int key, unsigned int mode) ;
     187: extern unsigned int  _keymgr_get_lockmode_processwide_ptr(unsigned int key) ;
     188: extern int _keymgr_get_lock_count_processwide_ptr(unsigned int key) ;
     189: 
     190: extern void *__keymgr_global[];
     191: typedef struct _Sinfo_Node {
     192:         unsigned int size ;             /*size of this node*/
     193:         unsigned short major_version ;  /*API major version.*/
     194:         unsigned short minor_version ;  /*API minor version.*/
     195:         } _Tinfo_Node ;
     196: 
     197: #define KEYMGR_VERSION \
     198:   (__keymgr_global[2] ? ((_Tinfo_Node *)__keymgr_global[2])->major_version : 0)
     199: 
     200: #define KEYMGR_SET_PER_THREAD_DATA(key, keydata)   \
     201:   (KEYMGR_VERSION >= 4                             \
     202:   ? _keymgr_set_per_thread_data((key), (keydata))  \
     203:   : (_keymgr_set_per_thread_data((key), (keydata)), 0))
     204: 
     205: #ifndef NULL
     206: #ifdef __GNUG__
     207: #define NULL __null
     208: #else
     209: #define NULL 0
     210: #endif
     211: #endif
     212: 
     213: /*
     214:  * Keys currently in use:
     215:  */
     216: 
     217: #define KEYMGR_EH_CONTEXT_KEY        1    /*stores handle for root pointer of exception context node.*/
     218: 
     219: #define KEYMGR_NEW_HANDLER_KEY        2    /*store handle for new handler pointer.*/
     220: 
     221: #define KEYMGR_UNEXPECTED_HANDLER_KEY    3    /*store handle for unexpected exception pointer.*/
     222: 
     223: #define KEYMGR_TERMINATE_HANDLER_KEY    4    /*store handle for terminate handler pointer. */
     224: 
     225: #define KEYMGR_MODE_BITS        5    /*stores handle for runtime mode bits.*/
     226: 
     227: #define KEYMGR_IO_LIST            6    /*Root pointer to the list of open streams.*/
     228: 
     229: #define KEYMGR_IO_STDIN            7    /*GNU stdin.*/
     230: 
     231: #define KEYMGR_IO_STDOUT        8    /*GNU stdout.*/
     232: 
     233: #define KEYMGR_IO_STDERR        9    /*GNU stderr.*/
     234: 
     235: #define KEYMGR_IO_REFCNT        10    /*How many plugins/main program currently using streams.*/
     236: 
     237: #define KEYMGR_IO_MODE_BITS        11    /*Flags controlling the behavior of C++ I/O.*/
     238: 
     239: #define KEYMGR_ZOE_IMAGE_LIST        12    /*Head pointer for list of per image dwarf2 unwind sections.*/
     240: 
     241: #define KEYMGR_EH_GLOBALS_KEY           13      /* Variable used in eh_globals.cc */
     242: 
     243: /*
     244:  * Other important data.
     245:  */
     246:  
     247: #define KEYMGR_API_REV_MAJOR        2    /*Major revision number of the keymgr API.*/
     248: #define KEYMGR_API_REV_MINOR        1    /*Minor revision number of the keymgr API.*/
     249: 
     250: 
     251: 
     252: #ifdef __cplusplus
     253: }
     254: #endif
     255: 
     256: #endif /* __KEYMGR_H */
     257: #endif /* __APPLE__ etc. */
     258: /* APPLE LOCAL end keymgr */
     259: #endif
     260: