Loading...
Searching...
No Matches
sem.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef _PICO_SEM_H
8#define _PICO_SEM_H
9
10#include "pico/lock_core.h"
11
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
37typedef struct semaphore {
38 struct lock_core core;
39 int16_t permits;
40 int16_t max_permits;
42
43
51void sem_init(semaphore_t *sem, int16_t initial_permits, int16_t max_permits);
52
60
70bool sem_release(semaphore_t *sem);
71
80void sem_reset(semaphore_t *sem, int16_t permits);
81
90
102bool sem_acquire_timeout_ms(semaphore_t *sem, uint32_t timeout_ms);
103
115bool sem_acquire_timeout_us(semaphore_t *sem, uint32_t timeout_us);
116
130
141
142#ifdef __cplusplus
143}
144#endif
145#endif
bool sem_acquire_timeout_us(semaphore_t *sem, uint32_t timeout_us)
Acquire a permit from a semaphore, with timeout.
Definition sem.c:48
bool sem_try_acquire(semaphore_t *sem)
Attempt to acquire a permit from a semaphore without blocking.
Definition sem.c:70
bool sem_acquire_timeout_ms(semaphore_t *sem, uint32_t timeout_ms)
Acquire a permit from a semaphore, with timeout.
Definition sem.c:44
bool sem_acquire_block_until(semaphore_t *sem, absolute_time_t until)
Wait to acquire a permit from a semaphore until a specific time.
Definition sem.c:52
struct semaphore semaphore_t
A semaphore for controlling access to a shared resource.
void sem_init(semaphore_t *sem, int16_t initial_permits, int16_t max_permits)
Initialise a semaphore structure.
Definition sem.c:10
void sem_reset(semaphore_t *sem, int16_t permits)
Reset semaphore to a specific number of available permits.
Definition sem.c:97
int sem_available(semaphore_t *sem)
Return number of available permits on the semaphore.
Definition sem.c:17
bool sem_release(semaphore_t *sem)
Release a permit on a semaphore.
Definition sem.c:84
void sem_acquire_blocking(semaphore_t *sem)
Acquire a permit from the semaphore.
Definition sem.c:26
uint64_t absolute_time_t
An opaque 64 bit timestamp in microseconds.
Definition types.h:43
Core state shared by all lock primitives.
Definition lock_core.h:69
A semaphore for controlling access to a shared resource.
Definition sem.h:37
int16_t permits
Current number of available permits.
Definition sem.h:39
struct lock_core core
Core lock primitive used for blocking and signalling.
Definition sem.h:38
int16_t max_permits
Maximum number of permits allowed.
Definition sem.h:40