r6.0.1:lfds601_abstraction (liblfds)

From liblfds.org
Jump to navigation Jump to search

Source Files

/liblfds601/src/lfds601_abstraction/lfds601_abstraction_aligned_free.c
/liblfds601/src/lfds601_abstraction/lfds601_abstraction_aligned_malloc.c
/liblfds601/src/lfds601_abstraction/lfds601_abstraction_cas.c
/liblfds601/src/lfds601_abstraction/lfds601_abstraction_dcas.c
/liblfds601/src/lfds601_abstraction/lfds601_abstraction_increment.c
/liblfds601/inc/liblfds601.h

Prototypes

void lfds601_abstraction_aligned_free( void *memory );
void *lfds601_abstraction_aligned_malloc( size_t size, size_t align_in_bytes );
lfds601_atom_t lfds601_abstraction_cas( volatile lfds601_atom_t *destination, lfds601_atom_t exchange, lfds601_atom_t compare )
unsigned char lfds601_abstraction_dcas( volatile lfds601_atom_t *destination, lfds601_atom_t *exchange, lfds601_atom_t *compare );
lfds601_atom_t lfds601_abstraction_increment( lfds601_atom_t *value );

Defines & Typedefs

typedef [type] lfds601_atom_t;

#define LFDS601_INLINE                [compiler inline directive]
#define LFDS601_ALIGN(alignment)      [compiler stack alignment directive]
#define LFDS601_ALIGN_SINGLE_POINTER  [lfds601_atom_t size in bytes]
#define LFDS601_ALIGN_DOUBLE_POINTER  [lfds601_atom_t size in bytes, multiplied by two]

Overview

This API is not a data structure. It is the abstraction layer for liblfds, which must be implemented on a given platform for liblfds to compile and run on that platform.

Please read the porting guide for detailed instructions.

Notes

Extern inline functions, for both GCC and MSVC, require the public prototype to be declared without the inline keyword while the function definition is declared with the inline keyword.