1// Copyright (c) 2010 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 "base/threading/thread_local.h" 6 7#include <windows.h> 8 9#include "base/logging.h" 10 11namespace base { 12namespace internal { 13 14// static 15void ThreadLocalPlatform::AllocateSlot(SlotType* slot) { 16 *slot = TlsAlloc(); 17 CHECK_NE(*slot, TLS_OUT_OF_INDEXES); 18} 19 20// static 21void ThreadLocalPlatform::FreeSlot(SlotType slot) { 22 if (!TlsFree(slot)) { 23 NOTREACHED() << "Failed to deallocate tls slot with TlsFree()."; 24 } 25} 26 27// static 28void* ThreadLocalPlatform::GetValueFromSlot(SlotType slot) { 29 return TlsGetValue(slot); 30} 31 32// static 33void ThreadLocalPlatform::SetValueInSlot(SlotType slot, void* value) { 34 if (!TlsSetValue(slot, value)) { 35 LOG(FATAL) << "Failed to TlsSetValue()."; 36 } 37} 38 39} // namespace internal 40} // namespace base 41