Pyrogenesis  13997
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Namespaces | Typedefs | Functions | Variables
unique_range.h File Reference
#include "lib/lib_api.h"
#include "lib/alignment.h"
#include "lib/sysdep/vm.h"

Go to the source code of this file.

Classes

class  UniqueRange
 

Namespaces

 std
 

Typedefs

typedef intptr_t IdxDeleter
 
typedef void(* UniqueRangeDeleter )(void *pointer, size_t size)
 

Functions

LIB_API void RegisterUniqueRangeDeleter (UniqueRangeDeleter deleter, volatile IdxDeleter *idxDeleter)
 register a deleter, returning its index within the table. More...
 
LIB_API NOTHROW_DECLARE void CallUniqueRangeDeleter (void *pointer, size_t size, IdxDeleter idxDeleter)
 
static void std::swap (UniqueRange &p1, UniqueRange &p2)
 
static void std::swap (RVALUE_REF(UniqueRange) p1, UniqueRange &p2)
 
static void std::swap (UniqueRange &p1, RVALUE_REF(UniqueRange) p2)
 
LIB_API UniqueRange AllocateAligned (size_t size, size_t alignment)
 
LIB_API UniqueRange AllocateVM (size_t size, vm::PageType pageSize=vm::kDefault, int prot=PROT_READ|PROT_WRITE)
 

Variables

static const IdxDeleter idxDeleterNone = 0
 

Typedef Documentation

typedef intptr_t IdxDeleter

Definition at line 21 of file unique_range.h.

typedef void(* UniqueRangeDeleter)(void *pointer, size_t size)

Definition at line 26 of file unique_range.h.

Function Documentation

LIB_API UniqueRange AllocateAligned ( size_t  size,
size_t  alignment 
)

Definition at line 57 of file unique_range.cpp.

LIB_API UniqueRange AllocateVM ( size_t  size,
vm::PageType  pageSize = vm::kDefault,
int  prot = PROT_READ|PROT_WRITE 
)

Definition at line 73 of file unique_range.cpp.

LIB_API NOTHROW_DECLARE void CallUniqueRangeDeleter ( void *  pointer,
size_t  size,
IdxDeleter  idxDeleter 
)

Definition at line 48 of file unique_range.cpp.

LIB_API void RegisterUniqueRangeDeleter ( UniqueRangeDeleter  deleter,
volatile IdxDeleter idxDeleter 
)

register a deleter, returning its index within the table.

Parameters
deleterfunction pointer. must be uniquely associated with the idxDeleter storage location.
idxDeleterlocation where to store the next available index. if it is already non-zero, skip the call to this function to avoid overhead.

thread-safe. idxDeleter is used for mutual exclusion between multiple callers for the same deleter. concurrent registration of different deleters is also safe due to atomic increments.

halts the program if more than allocationAlignment deleters are to be registered.

Definition at line 28 of file unique_range.cpp.

Variable Documentation

const IdxDeleter idxDeleterNone = 0
static

Definition at line 24 of file unique_range.h.