IntrOS
Loading...
Searching...
No Matches
Spin lock

spin locks More...

Macros

#define OS_SPN(spn)
 define and initialize a spin lock object
#define static_SPN(spn)
 static alias of OS_SPN()
#define SPN_INIT()
 create and initialize a spin lock object
#define SPN_CREATE()
 create and initialize a spin lock object
#define SPN_NEW   SPN_CREATE
 alias of SPN_CREATE()
#define spn_lock(spn)
 save interrupts state, disable interrupts then lock the spin lock object (wait indefinitely if the spin lock object can't be locked immediately) or do nothing if OS_ATOMICS is zero / enter into critical section
#define spn_unlock(spn)
 unlock the spin lock object or do nothing if OS_ATOMICS is zero then restore saved interrupts state / exit from critical section

Typedefs

typedef uint_fast8_t spn_t
 spin lock

Functions

void spn_init (spn_t *spn)
 initialize a spin lock object

Detailed Description

spin locks

Macro Definition Documentation

◆ OS_SPN

#define OS_SPN ( spn)
Value:
spn_t spn[] = { _SPN_INIT() }
uint_fast8_t spn_t
spin lock
Definition osspinlock.h:48

define and initialize a spin lock object

Parameters
spnname of a pointer to spin lock object

◆ static_SPN

#define static_SPN ( spn)
Value:
static spn_t spn[] = { _SPN_INIT() }

static alias of OS_SPN()

◆ SPN_INIT

#define SPN_INIT ( )
Value:
_SPN_INIT()

create and initialize a spin lock object

Returns
spin lock object
Note
use only in 'C' code

◆ SPN_CREATE

#define SPN_CREATE ( )
Value:
{ SPN_INIT () }
#define SPN_INIT()
create and initialize a spin lock object
Definition osspinlock.h:88

create and initialize a spin lock object

Returns
spin lock object as array (id)
Note
use only in 'C' code

◆ spn_lock

#define spn_lock ( spn)
Value:
sys_lock(); core_spn_lock(spn)
#define sys_lock()
save interrupts state then disable interrupts / enter into critical section
Definition oscriticalsection.h:140

save interrupts state, disable interrupts then lock the spin lock object (wait indefinitely if the spin lock object can't be locked immediately) or do nothing if OS_ATOMICS is zero / enter into critical section

Parameters
spnpointer to spin lock object
Note
do not use waiting functions inside spn_lock / spn_unlock

◆ spn_unlock

#define spn_unlock ( spn)
Value:
core_spn_unlock(spn); sys_unlock()
#define sys_unlock()
restore saved interrupts state / exit from critical section
Definition oscriticalsection.h:148

unlock the spin lock object or do nothing if OS_ATOMICS is zero then restore saved interrupts state / exit from critical section

Parameters
spnpointer to spin lock object
Note
do not use waiting functions inside spn_lock / spn_unlock

Function Documentation

◆ spn_init()

void spn_init ( spn_t * spn)
inline

initialize a spin lock object

Parameters
spnpointer to spin lock object