180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/* 280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2006 The Android Open Source Project 380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * 480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be 580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file. 680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */ 780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkThread.h" 980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruint32_t sk_atomic_inc(int32_t* addr) { 1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru int32_t value = *addr; 1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru *addr = value + 1; 1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru return value; 1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruint32_t sk_atomic_add(int32_t* addr, int32_t inc) { 1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru int32_t value = *addr; 1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru *addr = value + inc; 1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru return value; 2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruint32_t sk_atomic_dec(int32_t* addr) { 2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru int32_t value = *addr; 2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru *addr = value - 1; 2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru return value; 2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid sk_membar_aquire__after_atomic_dec() { } 2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruint32_t sk_atomic_conditional_inc(int32_t* addr) { 3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru int32_t value = *addr; 3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru if (value != 0) ++*addr; 3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru return value; 3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid sk_membar_aquire__after_atomic_conditional_inc() { } 3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruSkMutex::SkMutex() {} 3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruSkMutex::~SkMutex() {} 3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifndef SK_USE_POSIX_THREADS 4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid SkMutex::acquire() {} 4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid SkMutex::release() {} 4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif 44