Home | History | Annotate | Download | only in compiler
      1 //
      2 // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
      3 // Use of this source code is governed by a BSD-style license that can be
      4 // found in the LICENSE file.
      5 //
      6 
      7 #include "compiler/osinclude.h"
      8 //
      9 // This file contains contains the window's specific functions
     10 //
     11 
     12 #if !defined(ANGLE_OS_WIN)
     13 #error Trying to build a windows specific file in a non windows build.
     14 #endif
     15 
     16 
     17 //
     18 // Thread Local Storage Operations
     19 //
     20 OS_TLSIndex OS_AllocTLSIndex()
     21 {
     22 	DWORD dwIndex = TlsAlloc();
     23 	if (dwIndex == TLS_OUT_OF_INDEXES) {
     24 		assert(0 && "OS_AllocTLSIndex(): Unable to allocate Thread Local Storage");
     25 		return OS_INVALID_TLS_INDEX;
     26 	}
     27 
     28 	return dwIndex;
     29 }
     30 
     31 
     32 bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue)
     33 {
     34 	if (nIndex == OS_INVALID_TLS_INDEX) {
     35 		assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
     36 		return false;
     37 	}
     38 
     39 	if (TlsSetValue(nIndex, lpvValue))
     40 		return true;
     41 	else
     42 		return false;
     43 }
     44 
     45 
     46 bool OS_FreeTLSIndex(OS_TLSIndex nIndex)
     47 {
     48 	if (nIndex == OS_INVALID_TLS_INDEX) {
     49 		assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
     50 		return false;
     51 	}
     52 
     53 	if (TlsFree(nIndex))
     54 		return true;
     55 	else
     56 		return false;
     57 }
     58