| Index: src/ports/SkTLS_pthread.cpp
|
| ===================================================================
|
| --- src/ports/SkTLS_pthread.cpp (revision 0)
|
| +++ src/ports/SkTLS_pthread.cpp (working copy)
|
| @@ -0,0 +1,30 @@
|
| +/*
|
| + * Copyright 2013 Google Inc.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license that can be
|
| + * found in the LICENSE file.
|
| + */
|
| +
|
| +#include "SkTLS.h"
|
| +
|
| +#include <pthread.h>
|
| +
|
| +static pthread_key_t gSkTLSKey;
|
| +static pthread_once_t gSkTLSKey_Once = PTHREAD_ONCE_INIT;
|
| +
|
| +static void sk_tls_make_key() {
|
| + (void)pthread_key_create(&gSkTLSKey, SkTLS::Destructor);
|
| +}
|
| +
|
| +void* SkTLS::PlatformGetSpecific(bool forceCreateTheSlot) {
|
| + // should we use forceCreateTheSlot to potentially skip calling pthread_once
|
| + // and just return NULL if we've never been called with
|
| + // forceCreateTheSlot==true ?
|
| +
|
| + (void)pthread_once(&gSkTLSKey_Once, sk_tls_make_key);
|
| + return pthread_getspecific(gSkTLSKey);
|
| +}
|
| +
|
| +void SkTLS::PlatformSetSpecific(void* ptr) {
|
| + (void)pthread_setspecific(gSkTLSKey, ptr);
|
| +}
|
|
|