| Index: include/core/SkThread.h
|
| diff --git a/include/core/SkThread.h b/include/core/SkThread.h
|
| index 8d7fb3912c867ead350678783ac27c419e9382cf..67e0b72d1c39fd6d8d72f336a0eb8efe89393150 100644
|
| --- a/include/core/SkThread.h
|
| +++ b/include/core/SkThread.h
|
| @@ -8,135 +8,9 @@
|
| #ifndef SkThread_DEFINED
|
| #define SkThread_DEFINED
|
|
|
| -#include "SkTypes.h"
|
| -
|
| -// SkAtomics.h must provide inline implementations for the following declarations.
|
| -
|
| -/** Atomically adds one to the int referenced by addr and returns the previous value.
|
| - * No additional memory barrier is required; this must act as a compiler barrier.
|
| - */
|
| -static int32_t sk_atomic_inc(int32_t* addr);
|
| -static int64_t sk_atomic_inc(int64_t* addr);
|
| -
|
| -/** Atomically adds inc to the int referenced by addr and returns the previous value.
|
| - * No additional memory barrier is required; this must act as a compiler barrier.
|
| - */
|
| -static int32_t sk_atomic_add(int32_t* addr, int32_t inc);
|
| -
|
| -/** Atomically subtracts one from the int referenced by addr and returns the previous value.
|
| - * This must act as a release (SL/S) memory barrier and as a compiler barrier.
|
| - */
|
| -static int32_t sk_atomic_dec(int32_t* addr);
|
| -
|
| -/** Atomic compare and set.
|
| - * If *addr == before, set *addr to after and return true, otherwise return false.
|
| - * This must act as a release (SL/S) memory barrier and as a compiler barrier.
|
| - */
|
| -static bool sk_atomic_cas(int32_t* addr, int32_t before, int32_t after);
|
| -
|
| -/** If sk_atomic_dec does not act as an acquire (L/SL) barrier,
|
| - * this must act as an acquire (L/SL) memory barrier and as a compiler barrier.
|
| - */
|
| -static void sk_membar_acquire__after_atomic_dec();
|
| -
|
| -/** If sk_atomic_conditional_inc does not act as an acquire (L/SL) barrier,
|
| - * this must act as an acquire (L/SL) memory barrier and as a compiler barrier.
|
| - */
|
| -static void sk_membar_acquire__after_atomic_conditional_inc();
|
| +// TODO: delete this file, or maybe move the definition of SkThread here.
|
|
|
| #include "SkAtomics.h"
|
| -
|
| -/** Atomically adds one to the int referenced by addr iff the referenced int was not 0
|
| - * and returns the previous value.
|
| - * No additional memory barrier is required; this must act as a compiler barrier.
|
| - */
|
| -template<typename INT_TYPE> static inline INT_TYPE sk_atomic_conditional_inc(INT_TYPE* addr) {
|
| - INT_TYPE prev;
|
| - do {
|
| - prev = *addr;
|
| - if (0 == prev) {
|
| - break;
|
| - }
|
| - } while (!sk_atomic_cas(addr, prev, prev+1));
|
| - return prev;
|
| -}
|
| -
|
| -// SkBarriers.h must provide implementations for the following declarations:
|
| -
|
| -/** Prevent the compiler from reordering across this barrier. */
|
| -static void sk_compiler_barrier();
|
| -
|
| -/** Read T*, with at least an acquire barrier.
|
| - *
|
| - * Only needs to be implemented for T which can be atomically read.
|
| - */
|
| -template <typename T> T sk_acquire_load(T*);
|
| -
|
| -/** Write T*, with at least a release barrier.
|
| - *
|
| - * Only needs to be implemented for T which can be atomically written.
|
| - */
|
| -template <typename T> void sk_release_store(T*, T);
|
| -
|
| -#include "SkBarriers.h"
|
| -
|
| -/** SkMutex.h must provide the following (or equivalent) declarations.
|
| -
|
| -class SkBaseMutex {
|
| -public:
|
| - void acquire(); // Block until this thread owns the mutex.
|
| - void release(); // Assuming this thread owns the mutex, release it.
|
| - void assertHeld(); // If SK_DEBUG, assert this thread owns the mutex.
|
| -};
|
| -
|
| -class SkMutex : SkBaseMutex {
|
| -public:
|
| - SkMutex();
|
| - ~SkMutex();
|
| -};
|
| -
|
| -#define SK_DECLARE_STATIC_MUTEX(name) static SkBaseMutex name = ...
|
| -*/
|
| -
|
| #include "SkMutex.h"
|
|
|
| -class SkAutoMutexAcquire : SkNoncopyable {
|
| -public:
|
| - explicit SkAutoMutexAcquire(SkBaseMutex& mutex) : fMutex(&mutex) {
|
| - SkASSERT(fMutex != NULL);
|
| - mutex.acquire();
|
| - }
|
| -
|
| - explicit SkAutoMutexAcquire(SkBaseMutex* mutex) : fMutex(mutex) {
|
| - if (mutex) {
|
| - mutex->acquire();
|
| - }
|
| - }
|
| -
|
| - /** If the mutex has not been released, release it now. */
|
| - ~SkAutoMutexAcquire() {
|
| - if (fMutex) {
|
| - fMutex->release();
|
| - }
|
| - }
|
| -
|
| - /** If the mutex has not been released, release it now. */
|
| - void release() {
|
| - if (fMutex) {
|
| - fMutex->release();
|
| - fMutex = NULL;
|
| - }
|
| - }
|
| -
|
| - /** Assert that we're holding the mutex. */
|
| - void assertHeld() {
|
| - SkASSERT(fMutex);
|
| - fMutex->assertHeld();
|
| - }
|
| -
|
| -private:
|
| - SkBaseMutex* fMutex;
|
| -};
|
| -#define SkAutoMutexAcquire(...) SK_REQUIRE_LOCAL_VAR(SkAutoMutexAcquire)
|
| -
|
| #endif
|
|
|