Atlas Runtime
log_mgr_api.cpp File Reference
#include <cassert>
#include "log_mgr.hpp"
#include "atlas_alloc.h"
Include dependency graph for log_mgr_api.cpp:

Functions

void NVM_Initialize ()
 
void NVM_Finalize ()
 
void nvm_acquire (void *lock_address)
 
void nvm_release (void *lock_address)
 
void nvm_rwlock_rdlock (void *lock_address)
 
void nvm_rwlock_wrlock (void *lock_address)
 
void nvm_rwlock_unlock (void *lock_address)
 
void nvm_begin_durable ()
 
void nvm_end_durable ()
 
void nvm_store (void *addr, size_t sz)
 
void nvm_memset (void *addr, size_t sz)
 
void nvm_memcpy (void *dst, size_t sz)
 
void nvm_memmove (void *dst, size_t sz)
 
size_t nvm_strlen (char *dst)
 
void nvm_strcpy (char *dst, size_t sz)
 
void nvm_strcat (char *dst, size_t sz)
 
void nvm_log_alloc (void *addr)
 
void nvm_log_free (void *addr)
 
void nvm_barrier (void *p)
 
void nvm_psync (void *start_addr, size_t sz)
 
void nvm_psync_acq (void *start_addr, size_t sz)
 

Function Documentation

void nvm_acquire ( void *  lock_address)
void nvm_barrier ( void *  p)
void nvm_begin_durable ( )

The following 2 interfaces demarcate a failure-atomic section of code, i.e. code where persistent locations are updated and all-or-nothing behavior of those updates is required. Note that no isolation among threads is provided by these 2 interfaces.

void nvm_end_durable ( )
void NVM_Finalize ( )

Finalize Atlas internal data structures. This should be called before normal program exit. If not called, the implementation will assume that program exit was abnormal and will require invocation of recovery before restart.

void NVM_Initialize ( )

Initialize Atlas internal data structures. This should be called before persistent memory access.

void nvm_log_alloc ( void *  addr)
void nvm_log_free ( void *  addr)
void nvm_memcpy ( void *  dst,
size_t  sz 
)
void nvm_memmove ( void *  dst,
size_t  sz 
)
void nvm_memset ( void *  addr,
size_t  sz 
)
void nvm_psync ( void *  addr,
size_t  sz 
)

Persistent sync of a range of addresses

void nvm_psync_acq ( void *  addr,
size_t  sz 
)

Persistent sync of a range of addresses without a trailing barrier

void nvm_release ( void *  lock_address)
void nvm_rwlock_rdlock ( void *  lock_address)
void nvm_rwlock_unlock ( void *  lock_address)
void nvm_rwlock_wrlock ( void *  lock_address)
void nvm_store ( void *  addr,
size_t  sz 
)
void nvm_strcat ( char *  dst,
size_t  sz 
)
void nvm_strcpy ( char *  dst,
size_t  sz 
)
size_t nvm_strlen ( char *  dst)