1 : // Copyright (c) 2006-2008 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/thread_local.h"
6 :
7 : #include <pthread.h>
8 :
9 : #include "base/logging.h"
10 :
11 : namespace base {
12 :
13 : // static
14 4260 : void ThreadLocalPlatform::AllocateSlot(SlotType& slot) {
15 4260 : int error = pthread_key_create(&slot, NULL);
16 4260 : CHECK(error == 0);
17 4260 : }
18 :
19 : // static
20 4257 : void ThreadLocalPlatform::FreeSlot(SlotType& slot) {
21 4257 : int error = pthread_key_delete(slot);
22 4257 : DCHECK(error == 0);
23 4257 : }
24 :
25 : // static
26 14199 : void* ThreadLocalPlatform::GetValueFromSlot(SlotType& slot) {
27 14199 : return pthread_getspecific(slot);
28 : }
29 :
30 : // static
31 11356 : void ThreadLocalPlatform::SetValueInSlot(SlotType& slot, void* value) {
32 11356 : int error = pthread_setspecific(slot, value);
33 11356 : CHECK(error == 0);
34 11356 : }
35 :
36 : } // namespace base
|