blob: 1122c959d3825e20bffc376ac86d62e391ef69ac [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
2/*
3 * Copyright 2006 The Android Open Source Project
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
reed@android.com8a1c16f2008-12-17 15:59:43 +00009
10#include "SkThread.h"
bungeman@google.com55487522012-05-14 14:09:24 +000011#include "SkTLS.h"
reed@android.com8a1c16f2008-12-17 15:59:43 +000012
reed@google.comdcbd6e32012-01-12 15:21:16 +000013int32_t sk_atomic_inc(int32_t* addr) {
reed@android.com8a1c16f2008-12-17 15:59:43 +000014 int32_t value = *addr;
15 *addr = value + 1;
16 return value;
17}
18
scroggo@google.com50ccb0a2012-07-16 16:51:28 +000019int32_t sk_atomic_add(int32_t* addr, int32_t inc) {
20 int32_t value = *addr;
21 *addr = value + inc;
22 return value;
23}
24
reed@google.comdcbd6e32012-01-12 15:21:16 +000025int32_t sk_atomic_dec(int32_t* addr) {
reed@android.com8a1c16f2008-12-17 15:59:43 +000026 int32_t value = *addr;
27 *addr = value - 1;
28 return value;
29}
bungeman@google.coma02bc152012-05-16 18:21:56 +000030void sk_membar_aquire__after_atomic_dec() { }
31
32int32_t sk_atomic_conditional_inc(int32_t* addr) {
33 int32_t value = *addr;
34 if (value != 0) ++*addr;
35 return value;
36}
37void sk_membar_aquire__after_atomic_conditional_inc() { }
reed@android.com8a1c16f2008-12-17 15:59:43 +000038
reed@google.comdcbd6e32012-01-12 15:21:16 +000039SkMutex::SkMutex() {}
reed@android.com8a1c16f2008-12-17 15:59:43 +000040
reed@google.comdcbd6e32012-01-12 15:21:16 +000041SkMutex::~SkMutex() {}
reed@android.com8a1c16f2008-12-17 15:59:43 +000042
bungeman@google.com55487522012-05-14 14:09:24 +000043#ifndef SK_USE_POSIX_THREADS
reed@google.comdcbd6e32012-01-12 15:21:16 +000044void SkMutex::acquire() {}
reed@google.comdcbd6e32012-01-12 15:21:16 +000045void SkMutex::release() {}
bungeman@google.com55487522012-05-14 14:09:24 +000046#endif
reed@android.com8a1c16f2008-12-17 15:59:43 +000047
reed@google.com48ca7e32012-05-07 20:23:27 +000048//////////////////////////////////////////////////////////////////////////
49
50static void* gSpecific;
51
reed@google.com331e2dc2012-05-08 21:45:03 +000052void* SkTLS::PlatformGetSpecific(bool) {
reed@google.com48ca7e32012-05-07 20:23:27 +000053 return gSpecific;
54}
55
56void SkTLS::PlatformSetSpecific(void* ptr) {
57 gSpecific = ptr;
58}