|
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 } |