picotm  0.10.0
Macros | Enumerations | Functions
picotm-tm.h File Reference

Public interfaces of picotm's Transactional Memory module. More...

#include <picotm/compiler.h>
#include <picotm/config/picotm-tm-config.h>
#include <stddef.h>
#include <stdint.h>

Macros

#define PICOTM_TM_LOAD_TX(__name, __type)
 
#define PICOTM_TM_PRIVATIZE_LOADSTORE
 
#define PICOTM_TM_PRIVATIZE_TX(__name, __type)
 
#define PICOTM_TM_STORE_TX(__name, __type)
 

Enumerations

enum  { PICOTM_TM_PRIVATIZE_LOAD, PICOTM_TM_PRIVATIZE_STORE }
 

Functions

static _Bool load__Bool_tx (const _Bool *addr)
 
static char load_char_tx (const char *addr)
 
static double load_double_tx (const double *addr)
 
static float load_float_tx (const float *addr)
 
static int load_int_tx (const int *addr)
 
static long double load_ldouble_tx (const long double *addr)
 
static long long load_llong_tx (const long long *addr)
 
static long load_long_tx (const long *addr)
 
static void * load_ptr_tx (const void *addr)
 
static signed char load_schar_tx (const signed char *addr)
 
static short load_short_tx (const short *addr)
 
static void load_tx (const void *addr, void *buf, size_t siz)
 
static unsigned char load_uchar_tx (const unsigned char *addr)
 
static unsigned int load_uint_tx (const unsigned int *addr)
 
static unsigned long long load_ullong_tx (const unsigned long long *addr)
 
static unsigned long load_ulong_tx (const unsigned long *addr)
 
static unsigned short load_ushort_tx (const unsigned short *addr)
 
static void loadstore_tx (const void *laddr, void *saddr, size_t siz)
 
static void privatize__Bool_tx (const _Bool *addr, unsigned long flags)
 
static void privatize_c_tx (const void *addr, int c, unsigned long flags)
 
static void privatize_char_tx (const char *addr, unsigned long flags)
 
static void privatize_double_tx (const double *addr, unsigned long flags)
 
static void privatize_float_tx (const float *addr, unsigned long flags)
 
static void privatize_int_tx (const int *addr, unsigned long flags)
 
static void privatize_ldouble_tx (const long double *addr, unsigned long flags)
 
static void privatize_llong_tx (const long long *addr, unsigned long flags)
 
static void privatize_long_tx (const long *addr, unsigned long flags)
 
static void privatize_schar_tx (const signed char *addr, unsigned long flags)
 
static void privatize_short_tx (const short *addr, unsigned long flags)
 
static void privatize_tx (const void *addr, size_t siz, unsigned long flags)
 
static void privatize_uchar_tx (const unsigned char *addr, unsigned long flags)
 
static void privatize_uint_tx (const unsigned int *addr, unsigned long flags)
 
static void privatize_ullong_tx (const unsigned long long *addr, unsigned long flags)
 
static void privatize_ulong_tx (const unsigned long *addr, unsigned long flags)
 
static void privatize_ushort_tx (const unsigned short *addr, unsigned long flags)
 
static void store__Bool_tx (_Bool *addr, _Bool value)
 
static void store_char_tx (char *addr, char value)
 
static void store_double_tx (double *addr, double value)
 
static void store_float_tx (float *addr, float value)
 
static void store_int_tx (int *addr, int value)
 
static void store_ldouble_tx (long double *addr, long double value)
 
static void store_llong_tx (long long *addr, long long value)
 
static void store_long_tx (long *addr, long value)
 
static void store_ptr_tx (void *addr, const void *ptr)
 
static void store_schar_tx (signed char *addr, signed char value)
 
static void store_short_tx (short *addr, short value)
 
static void store_tx (void *addr, const void *buf, size_t siz)
 
static void store_uchar_tx (unsigned char *addr, unsigned char value)
 
static void store_uint_tx (unsigned int *addr, unsigned int value)
 
static void store_ullong_tx (unsigned long long *addr, unsigned long long value)
 
static void store_ulong_tx (unsigned long *addr, unsigned long value)
 
static void store_ushort_tx (unsigned short *addr, unsigned short value)
 

Macro Definition Documentation

◆ PICOTM_TM_LOAD_TX

#define PICOTM_TM_LOAD_TX (   __name,
  __type 
)

Defines a C function for conveniently loading a value of a specific type into a transaction. The helper function's name is load_<__name>_tx.

Parameters
__nameThe name of the type.
__typeThe C type.

◆ PICOTM_TM_PRIVATIZE_LOADSTORE

#define PICOTM_TM_PRIVATIZE_LOADSTORE

Privatizes a memory region for loading and storing.

◆ PICOTM_TM_PRIVATIZE_TX

#define PICOTM_TM_PRIVATIZE_TX (   __name,
  __type 
)

Defines a C function for conveniently privatizing a value of a specific type into a transaction. The helper function's name is store_<__name>_tx.

Parameters
__nameThe name of the type.
__typeThe C type.

◆ PICOTM_TM_STORE_TX

#define PICOTM_TM_STORE_TX (   __name,
  __type 
)

Defines a C function for conveniently storing a value of a specific type into a transaction. The helper function's name is store_<__name>_tx.

Parameters
__nameThe name of the type.
__typeThe C type.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

Flags for memory privatizations.

Enumerator
PICOTM_TM_PRIVATIZE_LOAD 

Privatizes a memory region for loading.

PICOTM_TM_PRIVATIZE_STORE 

Privatizes a memory region for storing.

Function Documentation

◆ load__Bool_tx()

static _Bool load__Bool_tx ( const _Bool *  addr)
inlinestatic

Loads a value of type ' _Bool ' with transactional semantics.

Parameters
addrThe source address.
Returns
The transaction-local value loaded from address 'addr'.

◆ load_char_tx()

static char load_char_tx ( const char *  addr)
inlinestatic

Loads a value of type ' char ' with transactional semantics.

Parameters
addrThe source address.
Returns
The transaction-local value loaded from address 'addr'.

◆ load_double_tx()

static double load_double_tx ( const double *  addr)
inlinestatic

Loads a value of type ' double ' with transactional semantics.

Parameters
addrThe source address.
Returns
The transaction-local value loaded from address 'addr'.

◆ load_float_tx()

static float load_float_tx ( const float *  addr)
inlinestatic

Loads a value of type ' float ' with transactional semantics.

Parameters
addrThe source address.
Returns
The transaction-local value loaded from address 'addr'.

◆ load_int_tx()

static int load_int_tx ( const int *  addr)
inlinestatic

Loads a value of type ' int ' with transactional semantics.

Parameters
addrThe source address.
Returns
The transaction-local value loaded from address 'addr'.

◆ load_ldouble_tx()

static long double load_ldouble_tx ( const long double *  addr)
inlinestatic

Loads a value of type ' long double ' with transactional semantics.

Parameters
addrThe source address.
Returns
The transaction-local value loaded from address 'addr'.

◆ load_llong_tx()

static long long load_llong_tx ( const long long *  addr)
inlinestatic

Loads a value of type ' long long ' with transactional semantics.

Parameters
addrThe source address.
Returns
The transaction-local value loaded from address 'addr'.

◆ load_long_tx()

static long load_long_tx ( const long *  addr)
inlinestatic

Loads a value of type ' long ' with transactional semantics.

Parameters
addrThe source address.
Returns
The transaction-local value loaded from address 'addr'.

◆ load_ptr_tx()

static void* load_ptr_tx ( const void *  addr)
inlinestatic

Loads a pointer into a buffer.

Parameters
addrThe address to load from.
Returns
The transaction-local pointer.

◆ load_schar_tx()

static signed char load_schar_tx ( const signed char *  addr)
inlinestatic

Loads a value of type ' signed char ' with transactional semantics.

Parameters
addrThe source address.
Returns
The transaction-local value loaded from address 'addr'.

◆ load_short_tx()

static short load_short_tx ( const short *  addr)
inlinestatic

Loads a value of type ' short ' with transactional semantics.

Parameters
addrThe source address.
Returns
The transaction-local value loaded from address 'addr'.

◆ load_tx()

static void load_tx ( const void *  addr,
void *  buf,
size_t  siz 
)
inlinestatic

Loads the memory at address into a buffer.

Parameters
addrThe address to load from.
bufThe transaction-local buffer to store the loaded value in.
sizThe number of bytes to load.

◆ load_uchar_tx()

static unsigned char load_uchar_tx ( const unsigned char *  addr)
inlinestatic

Loads a value of type ' unsigned char ' with transactional semantics.

Parameters
addrThe source address.
Returns
The transaction-local value loaded from address 'addr'.

◆ load_uint_tx()

static unsigned int load_uint_tx ( const unsigned int *  addr)
inlinestatic

Loads a value of type ' unsigned int ' with transactional semantics.

Parameters
addrThe source address.
Returns
The transaction-local value loaded from address 'addr'.

◆ load_ullong_tx()

static unsigned long long load_ullong_tx ( const unsigned long long *  addr)
inlinestatic

Loads a value of type ' unsigned long long ' with transactional semantics.

Parameters
addrThe source address.
Returns
The transaction-local value loaded from address 'addr'.

◆ load_ulong_tx()

static unsigned long load_ulong_tx ( const unsigned long *  addr)
inlinestatic

Loads a value of type ' unsigned long ' with transactional semantics.

Parameters
addrThe source address.
Returns
The transaction-local value loaded from address 'addr'.

◆ load_ushort_tx()

static unsigned short load_ushort_tx ( const unsigned short *  addr)
inlinestatic

Loads a value of type ' unsigned short ' with transactional semantics.

Parameters
addrThe source address.
Returns
The transaction-local value loaded from address 'addr'.

◆ loadstore_tx()

static void loadstore_tx ( const void *  laddr,
void *  saddr,
size_t  siz 
)
inlinestatic

Copies data between non-transactional memory regions.

Parameters
laddrThe address of the source region.
saddrThe address of the destination region.
sizThe number of bytes ot copy.

◆ privatize__Bool_tx()

static void privatize__Bool_tx ( const _Bool *  addr,
unsigned long  flags 
)
inlinestatic

Privatizes a value of type ' _Bool '.

Parameters
addrThe address to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_c_tx()

static void privatize_c_tx ( const void *  addr,
int  c,
unsigned long  flags 
)
inlinestatic

Privatizes the memory region starting at address, ending at character 'c'.

Parameters
addrThe address to privatize.
cThe region's terminating character.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_char_tx()

static void privatize_char_tx ( const char *  addr,
unsigned long  flags 
)
inlinestatic

Privatizes a value of type ' char '.

Parameters
addrThe address to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_double_tx()

static void privatize_double_tx ( const double *  addr,
unsigned long  flags 
)
inlinestatic

Privatizes a value of type ' double '.

Parameters
addrThe address to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_float_tx()

static void privatize_float_tx ( const float *  addr,
unsigned long  flags 
)
inlinestatic

Privatizes a value of type ' float '.

Parameters
addrThe address to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_int_tx()

static void privatize_int_tx ( const int *  addr,
unsigned long  flags 
)
inlinestatic

Privatizes a value of type ' int '.

Parameters
addrThe address to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_ldouble_tx()

static void privatize_ldouble_tx ( const long double *  addr,
unsigned long  flags 
)
inlinestatic

Privatizes a value of type ' long double '.

Parameters
addrThe address to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_llong_tx()

static void privatize_llong_tx ( const long long *  addr,
unsigned long  flags 
)
inlinestatic

Privatizes a value of type ' long long '.

Parameters
addrThe address to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_long_tx()

static void privatize_long_tx ( const long *  addr,
unsigned long  flags 
)
inlinestatic

Privatizes a value of type ' long '.

Parameters
addrThe address to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_schar_tx()

static void privatize_schar_tx ( const signed char *  addr,
unsigned long  flags 
)
inlinestatic

Privatizes a value of type ' signed char '.

Parameters
addrThe address to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_short_tx()

static void privatize_short_tx ( const short *  addr,
unsigned long  flags 
)
inlinestatic

Privatizes a value of type ' short '.

Parameters
addrThe address to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_tx()

static void privatize_tx ( const void *  addr,
size_t  siz,
unsigned long  flags 
)
inlinestatic

Privatizes the memory region starting at address.

Parameters
addrThe address to privatize.
sizThe number of bytes to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_uchar_tx()

static void privatize_uchar_tx ( const unsigned char *  addr,
unsigned long  flags 
)
inlinestatic

Privatizes a value of type ' unsigned char '.

Parameters
addrThe address to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_uint_tx()

static void privatize_uint_tx ( const unsigned int *  addr,
unsigned long  flags 
)
inlinestatic

Privatizes a value of type ' unsigned int '.

Parameters
addrThe address to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_ullong_tx()

static void privatize_ullong_tx ( const unsigned long long *  addr,
unsigned long  flags 
)
inlinestatic

Privatizes a value of type ' unsigned long long '.

Parameters
addrThe address to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_ulong_tx()

static void privatize_ulong_tx ( const unsigned long *  addr,
unsigned long  flags 
)
inlinestatic

Privatizes a value of type ' unsigned long '.

Parameters
addrThe address to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ privatize_ushort_tx()

static void privatize_ushort_tx ( const unsigned short *  addr,
unsigned long  flags 
)
inlinestatic

Privatizes a value of type ' unsigned short '.

Parameters
addrThe address to privatize.
flagsPrivatizes for loading and/or storing. Not setting flags discards the buffer.

◆ store__Bool_tx()

static void store__Bool_tx ( _Bool *  addr,
_Bool  value 
)
inlinestatic

Stores a value of type ' _Bool ' with transactional semantics.

Parameters
addrThe destination address.
valueThe value to store at 'addr'.

◆ store_char_tx()

static void store_char_tx ( char *  addr,
char  value 
)
inlinestatic

Stores a value of type ' char ' with transactional semantics.

Parameters
addrThe destination address.
valueThe value to store at 'addr'.

◆ store_double_tx()

static void store_double_tx ( double *  addr,
double  value 
)
inlinestatic

Stores a value of type ' double ' with transactional semantics.

Parameters
addrThe destination address.
valueThe value to store at 'addr'.

◆ store_float_tx()

static void store_float_tx ( float *  addr,
float  value 
)
inlinestatic

Stores a value of type ' float ' with transactional semantics.

Parameters
addrThe destination address.
valueThe value to store at 'addr'.

◆ store_int_tx()

static void store_int_tx ( int *  addr,
int  value 
)
inlinestatic

Stores a value of type ' int ' with transactional semantics.

Parameters
addrThe destination address.
valueThe value to store at 'addr'.

◆ store_ldouble_tx()

static void store_ldouble_tx ( long double *  addr,
long double  value 
)
inlinestatic

Stores a value of type ' long double ' with transactional semantics.

Parameters
addrThe destination address.
valueThe value to store at 'addr'.

◆ store_llong_tx()

static void store_llong_tx ( long long *  addr,
long long  value 
)
inlinestatic

Stores a value of type ' long long ' with transactional semantics.

Parameters
addrThe destination address.
valueThe value to store at 'addr'.

◆ store_long_tx()

static void store_long_tx ( long *  addr,
long  value 
)
inlinestatic

Stores a value of type ' long ' with transactional semantics.

Parameters
addrThe destination address.
valueThe value to store at 'addr'.

◆ store_ptr_tx()

static void store_ptr_tx ( void *  addr,
const void *  ptr 
)
inlinestatic

Stores the pointer in memory.

Parameters
addrThe address to store to.
ptrThe pointer value to store.

◆ store_schar_tx()

static void store_schar_tx ( signed char *  addr,
signed char  value 
)
inlinestatic

Stores a value of type ' signed char ' with transactional semantics.

Parameters
addrThe destination address.
valueThe value to store at 'addr'.

◆ store_short_tx()

static void store_short_tx ( short *  addr,
short  value 
)
inlinestatic

Stores a value of type ' short ' with transactional semantics.

Parameters
addrThe destination address.
valueThe value to store at 'addr'.

◆ store_tx()

static void store_tx ( void *  addr,
const void *  buf,
size_t  siz 
)
inlinestatic

Stores the buffer at address in memory.

Parameters
addrThe address to store to.
bufThe transaction-local buffer to load the loaded value from.
sizThe number of bytes to store.

◆ store_uchar_tx()

static void store_uchar_tx ( unsigned char *  addr,
unsigned char  value 
)
inlinestatic

Stores a value of type ' unsigned char ' with transactional semantics.

Parameters
addrThe destination address.
valueThe value to store at 'addr'.

◆ store_uint_tx()

static void store_uint_tx ( unsigned int *  addr,
unsigned int  value 
)
inlinestatic

Stores a value of type ' unsigned int ' with transactional semantics.

Parameters
addrThe destination address.
valueThe value to store at 'addr'.

◆ store_ullong_tx()

static void store_ullong_tx ( unsigned long long *  addr,
unsigned long long  value 
)
inlinestatic

Stores a value of type ' unsigned long long ' with transactional semantics.

Parameters
addrThe destination address.
valueThe value to store at 'addr'.

◆ store_ulong_tx()

static void store_ulong_tx ( unsigned long *  addr,
unsigned long  value 
)
inlinestatic

Stores a value of type ' unsigned long ' with transactional semantics.

Parameters
addrThe destination address.
valueThe value to store at 'addr'.

◆ store_ushort_tx()

static void store_ushort_tx ( unsigned short *  addr,
unsigned short  value 
)
inlinestatic

Stores a value of type ' unsigned short ' with transactional semantics.

Parameters
addrThe destination address.
valueThe value to store at 'addr'.