Edit

kc3-lang/angle/src/compiler/osinclude.h

Branch :

  • Show log

    Commit

  • Author : vangelis@google.com
    Date : 2011-09-15 18:47:53
    Hash : 74a46a5c
    Message : Recognize ANDROID as a POSIX OS BUG=207 Review URL: http://codereview.appspot.com/5016050 git-svn-id: https://angleproject.googlecode.com/svn/trunk@753 736b8ea6-26fd-11df-bfd4-992fa37f6226

  • src/compiler/osinclude.h
  • //
    // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    
    #ifndef __OSINCLUDE_H
    #define __OSINCLUDE_H
    
    //
    // This file contains contains os-specific datatypes and
    // declares any os-specific functions.
    //
    
    #if defined(_WIN32) || defined(_WIN64)
    #define ANGLE_OS_WIN
    #elif defined(__APPLE__) || defined(__linux__) || \
          defined(__FreeBSD__) || defined(__OpenBSD__) || \
          defined(__sun) || defined(ANDROID)
    #define ANGLE_OS_POSIX
    #else
    #error Unsupported platform.
    #endif
    
    #if defined(ANGLE_USE_NSPR)
    #include "prthread.h"
    #elif defined(ANGLE_OS_WIN)
    #define STRICT
    #define VC_EXTRALEAN 1
    #include <windows.h>
    #elif defined(ANGLE_OS_POSIX)
    #include <pthread.h>
    #include <semaphore.h>
    #include <errno.h>
    #endif  // ANGLE_USE_NSPR
    
    
    #include "compiler/debug.h"
    
    //
    // Thread Local Storage Operations
    //
    #if defined(ANGLE_USE_NSPR)
    typedef PRUintn OS_TLSIndex;
    #define OS_INVALID_TLS_INDEX 0xFFFFFFFF
    #elif defined(ANGLE_OS_WIN)
    typedef DWORD OS_TLSIndex;
    #define OS_INVALID_TLS_INDEX (TLS_OUT_OF_INDEXES)
    #elif defined(ANGLE_OS_POSIX)
    typedef unsigned int OS_TLSIndex;
    #define OS_INVALID_TLS_INDEX 0xFFFFFFFF
    #endif  // ANGLE_USE_NSPR
    
    OS_TLSIndex OS_AllocTLSIndex();
    bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue);
    bool OS_FreeTLSIndex(OS_TLSIndex nIndex);
    
    inline void* OS_GetTLSValue(OS_TLSIndex nIndex)
    {
        ASSERT(nIndex != OS_INVALID_TLS_INDEX);
    #if defined(ANGLE_USE_NSPR)
        return PR_GetThreadPrivate(nIndex);
    #elif defined(ANGLE_OS_WIN)
        return TlsGetValue(nIndex);
    #elif defined(ANGLE_OS_POSIX)
        return pthread_getspecific(nIndex);
    #endif  // ANGLE_OS_WIN
    }
    
    #endif // __OSINCLUDE_H