1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "mojo/public/cpp/utility/lib/thread_local.h" 6 7 #include <assert.h> 8 #include <windows.h> 9 10 namespace mojo { 11 namespace internal { 12 13 // static AllocateSlot(SlotType * slot)14void ThreadLocalPlatform::AllocateSlot(SlotType* slot) { 15 *slot = TlsAlloc(); 16 assert(*slot != TLS_OUT_OF_INDEXES); 17 } 18 19 // static FreeSlot(SlotType slot)20void ThreadLocalPlatform::FreeSlot(SlotType slot) { 21 if (!TlsFree(slot)) { 22 assert(false); 23 } 24 } 25 26 // static GetValueFromSlot(SlotType slot)27void* ThreadLocalPlatform::GetValueFromSlot(SlotType slot) { 28 return TlsGetValue(slot); 29 } 30 31 // static SetValueInSlot(SlotType slot,void * value)32void ThreadLocalPlatform::SetValueInSlot(SlotType slot, void* value) { 33 if (!TlsSetValue(slot, value)) { 34 assert(false); 35 } 36 } 37 38 } // namespace internal 39 } // namespace mojo 40