|
Ptex
|
Platform-specific classes, functions, and includes. More...
#include "PtexInt.h"#include <stdlib.h>#include <alloca.h>#include <string.h>#include <pthread.h>#include <stdio.h>#include <math.h>#include <assert.h>#include "PtexVersion.h"Go to the source code of this file.
Classes | |
| class | Mutex |
| class | SpinLock |
| struct | AtomicCompareAndSwapImpl< T, sizeof(uint32_t)> |
| struct | AtomicCompareAndSwapImpl< T, sizeof(uint64_t)> |
Macros | |
| #define | PTEX_PLATFORM_UNIX |
| #define | ATOMIC_ALIGNED __attribute__((aligned(8))) |
| #define | ATOMIC_ADD32(x, y) __sync_add_and_fetch(x,y) |
| #define | ATOMIC_ADD64(x, y) __sync_add_and_fetch(x,y) |
| #define | ATOMIC_SUB32(x, y) __sync_sub_and_fetch(x,y) |
| #define | ATOMIC_SUB64(x, y) __sync_sub_and_fetch(x,y) |
| #define | MEM_FENCE() __sync_synchronize() |
| #define | BOOL_CMPXCH32(x, y, z) __sync_bool_compare_and_swap((x),(y),(z)) |
| #define | BOOL_CMPXCH64(x, y, z) __sync_bool_compare_and_swap((x),(y),(z)) |
| #define | PTEX_INLINE inline __attribute__((always_inline)) |
| #define | CACHE_LINE_SIZE 64 |
| #define | CACHE_LINE_PAD(var, type) char var##_pad[CACHE_LINE_SIZE - sizeof(type)] |
| #define | CACHE_LINE_PAD_INIT(var) memset(&var##_pad[0], 0, sizeof(var##_pad)) |
Typedefs | |
| typedef off_t | FilePos |
Functions | |
| template<typename T > | |
| PTEX_INLINE T | AtomicAdd (volatile T *target, T value) |
| template<typename T > | |
| PTEX_INLINE T | AtomicIncrement (volatile T *target) |
| template<typename T > | |
| PTEX_INLINE T | AtomicSubtract (volatile T *target, T value) |
| template<typename T > | |
| PTEX_INLINE T | AtomicDecrement (volatile T *target) |
| template<typename T > | |
| PTEX_INLINE bool | AtomicCompareAndSwap (T volatile *target, T oldvalue, T newvalue) |
| template<typename T > | |
| PTEX_INLINE void | AtomicStore (T volatile *target, T value) |
| PTEX_INLINE void | PtexMemoryFence () |
Platform-specific classes, functions, and includes.
Definition in file PtexPlatform.h.
| #define ATOMIC_ADD32 | ( | x, | |
| y ) __sync_add_and_fetch(x,y) |
Definition at line 193 of file PtexPlatform.h.
Referenced by AtomicAdd().
| #define ATOMIC_ADD64 | ( | x, | |
| y ) __sync_add_and_fetch(x,y) |
Definition at line 194 of file PtexPlatform.h.
Referenced by AtomicAdd().
| #define ATOMIC_ALIGNED __attribute__((aligned(8))) |
Definition at line 192 of file PtexPlatform.h.
| #define ATOMIC_SUB32 | ( | x, | |
| y ) __sync_sub_and_fetch(x,y) |
Definition at line 195 of file PtexPlatform.h.
Referenced by AtomicSubtract().
| #define ATOMIC_SUB64 | ( | x, | |
| y ) __sync_sub_and_fetch(x,y) |
Definition at line 196 of file PtexPlatform.h.
Referenced by AtomicSubtract().
| #define BOOL_CMPXCH32 | ( | x, | |
| y, | |||
| z ) __sync_bool_compare_and_swap((x),(y),(z)) |
Definition at line 198 of file PtexPlatform.h.
Referenced by AtomicCompareAndSwapImpl< T, sizeof(uint32_t)>::operator()().
| #define BOOL_CMPXCH64 | ( | x, | |
| y, | |||
| z ) __sync_bool_compare_and_swap((x),(y),(z)) |
Definition at line 199 of file PtexPlatform.h.
Referenced by AtomicCompareAndSwapImpl< T, sizeof(uint64_t)>::operator()().
| #define CACHE_LINE_PAD | ( | var, | |
| type ) char var##_pad[CACHE_LINE_SIZE - sizeof(type)] |
Definition at line 300 of file PtexPlatform.h.
| #define CACHE_LINE_PAD_INIT | ( | var | ) | memset(&var##_pad[0], 0, sizeof(var##_pad)) |
Definition at line 301 of file PtexPlatform.h.
Referenced by PtexReaderCache::PtexReaderCache().
| #define CACHE_LINE_SIZE 64 |
Definition at line 297 of file PtexPlatform.h.
| #define MEM_FENCE | ( | ) | __sync_synchronize() |
Definition at line 197 of file PtexPlatform.h.
Referenced by AtomicStore(), and PtexMemoryFence().
| #define PTEX_INLINE inline __attribute__((always_inline)) |
Definition at line 202 of file PtexPlatform.h.
| #define PTEX_PLATFORM_UNIX |
Definition at line 83 of file PtexPlatform.h.
| typedef off_t FilePos |
Definition at line 99 of file PtexPlatform.h.
| PTEX_INLINE T AtomicAdd | ( | volatile T * | target, |
| T | value ) |
Definition at line 209 of file PtexPlatform.h.
References ATOMIC_ADD32, and ATOMIC_ADD64.
Referenced by PtexReaderCache::adjustFilesOpen(), PtexReaderCache::adjustMemUsed(), AtomicIncrement(), and PtexReader::increaseMemUsed().
| PTEX_INLINE bool AtomicCompareAndSwap | ( | T volatile * | target, |
| T | oldvalue, | ||
| T | newvalue ) |
Definition at line 278 of file PtexPlatform.h.
Referenced by PtexReader::TiledReducedFace::getTile(), PtexHashMap< Key, Value >::lockEntries(), PtexCachedReader::ref(), and PtexCachedReader::trylock().
| PTEX_INLINE T AtomicDecrement | ( | volatile T * | target | ) |
Definition at line 247 of file PtexPlatform.h.
References AtomicSubtract().
Referenced by PtexCachedReader::unref().
| PTEX_INLINE T AtomicIncrement | ( | volatile T * | target | ) |
Definition at line 225 of file PtexPlatform.h.
References AtomicAdd().
Referenced by PtexReader::logBlockRead(), PtexReader::logOpen(), and PtexReaderCache::logRecentlyUsed().
| PTEX_INLINE void AtomicStore | ( | T volatile * | target, |
| T | value ) |
Definition at line 284 of file PtexPlatform.h.
References MEM_FENCE.
Referenced by PtexReader::open(), PtexReaderCache::processMru(), PtexReader::readFaceData(), PtexReader::readLevel(), PtexReader::readMetaData(), PtexCachedReader::unlock(), and PtexHashMap< Key, Value >::unlockEntries().
| PTEX_INLINE T AtomicSubtract | ( | volatile T * | target, |
| T | value ) |
Definition at line 231 of file PtexPlatform.h.
References ATOMIC_SUB32, and ATOMIC_SUB64.
Referenced by AtomicDecrement().
| PTEX_INLINE void PtexMemoryFence | ( | ) |
Definition at line 290 of file PtexPlatform.h.
References MEM_FENCE.
Referenced by PtexHashMap< Key, Value >::tryInsert().