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 9 namespace mojo { 10 namespace internal { 11 12 // static AllocateSlot(SlotType * slot)13void ThreadLocalPlatform::AllocateSlot(SlotType* slot) { 14 if (pthread_key_create(slot, NULL) != 0) { 15 assert(false); 16 } 17 } 18 19 // static FreeSlot(SlotType slot)20void ThreadLocalPlatform::FreeSlot(SlotType slot) { 21 if (pthread_key_delete(slot) != 0) { 22 assert(false); 23 } 24 } 25 26 // static GetValueFromSlot(SlotType slot)27void* ThreadLocalPlatform::GetValueFromSlot(SlotType slot) { 28 return pthread_getspecific(slot); 29 } 30 31 // static SetValueInSlot(SlotType slot,void * value)32void ThreadLocalPlatform::SetValueInSlot(SlotType slot, void* value) { 33 if (pthread_setspecific(slot, value) != 0) { 34 assert(false); 35 } 36 } 37 38 } // namespace internal 39 } // namespace mojo 40