v2.0.0
Data Structures | Macros | Typedefs | Functions
lock_core.h File Reference
High Level APIs » pico_sync » lock_core
`#include "pico.h"`
`#include "pico/time.h"`
`#include "hardware/sync.h"`
Include dependency graph for lock_core.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures
struct | lock_core

## Macros
#define | PARAM_ASSERTIONS_ENABLED_LOCK_CORE 0
#define | lock_owner_id_t int8_t
| type to use to store the 'owner' of a lock. More...
#define | LOCK_INVALID_OWNER_ID ((lock_owner_id_t)-1)
| marker value to use for a lock_owner_id_t which does not refer to any valid owner
#define | lock_get_caller_owner_id() ((lock_owner_id_t)get_core_num())
| return the owner id for the caller More...
#define | lock_is_owner_id_valid(id) ((id)>=0)
#define | lock_internal_spin_unlock_with_wait(lock, save) spin_unlock((lock)->spin_lock, save), __wfe()
| Atomically unlock the lock's spin lock, and wait for a notification. More...
#define | lock_internal_spin_unlock_with_notify(lock, save) spin_unlock((lock)->spin_lock, save), __sev()
| Atomically unlock the lock's spin lock, and send a notification. More...
#define | lock_internal_spin_unlock_with_best_effort_wait_or_timeout(lock, save, until)
| Atomically unlock the lock's spin lock, and wait for a notification or a timeout. More...
#define | sync_internal_yield_until_before(until) ((void)0)
| yield to other processing until some time before the requested time More...

## Typedefs
typedef struct lock_core | lock_core_t

## Functions
void | lock_init (lock_core_t *core, uint lock_num)
| Initialise a lock structure. More...

## Detailed Description

Base implementation for locking primitives protected by a spin lock. The spin lock is only used to protect access to the remaining lock state (in primitives using lock_core); it is never left locked outside of the function implementations