r6.0.0:lfds600_abstraction (liblfds)

From liblfds.org
Jump to navigation Jump to search

Source Files

/liblfds600/src/lfds600_abstraction/lfds600_abstraction_aligned_free.c
/liblfds600/src/lfds600_abstraction/lfds600_abstraction_aligned_malloc.c
/liblfds600/src/lfds600_abstraction/lfds600_abstraction_cas.c
/liblfds600/src/lfds600_abstraction/lfds600_abstraction_dcas.c
/liblfds600/src/lfds600_abstraction/lfds600_abstraction_increment.c
/liblfds600/inc/liblfds600.h

Prototypes

void lfds600_abstraction_aligned_free( void *memory );
void *lfds600_abstraction_aligned_malloc( size_t size, size_t align_in_bytes );
lfds600_atom_t lfds600_abstraction_cas( volatile lfds600_atom_t *destination, lfds600_atom_t exchange, lfds600_atom_t compare )
unsigned char lfds600_abstraction_dcas( volatile lfds600_atom_t *destination, lfds600_atom_t *exchange, lfds600_atom_t *compare );
lfds600_atom_t lfds600_abstraction_increment( lfds600_atom_t *value );

Defines & Typedefs

typedef [type] lfds600_atom_t;

#define LFDS600_INLINE                [compiler inline directive]
#define LFDS600_ALIGN(alignment)      [compiler stack alignment directive]
#define LFDS600_ALIGN_SINGLE_POINTER  [lfds600_atom_t size in bytes]
#define LFDS600_ALIGN_DOUBLE_POINTER  [lfds600_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.