Home
last modified time | relevance | path

Searched refs:sem (Results 1 – 9 of 9) sorted by relevance

/hal_rpi_pico-latest/src/common/pico_sync/
Dsem.c10 void sem_init(semaphore_t *sem, int16_t initial_permits, int16_t max_permits) { in sem_init() argument
11 lock_init(&sem->core, next_striped_spin_lock_num()); in sem_init()
12 sem->permits = initial_permits; in sem_init()
13 sem->max_permits = max_permits; in sem_init()
17 int __time_critical_func(sem_available)(semaphore_t *sem) { in __time_critical_func()
19 return *(volatile typeof(sem->permits) *) &sem->permits; in __time_critical_func()
21 static_assert(sizeof(sem->permits) == 2, ""); in __time_critical_func()
22 return *(volatile int16_t *) &sem->permits; in __time_critical_func()
26 void __time_critical_func(sem_acquire_blocking)(semaphore_t *sem) { in __time_critical_func()
28 uint32_t save = spin_lock_blocking(sem->core.spin_lock); in __time_critical_func()
[all …]
DBUILD.bazel11 "include/pico/sem.h",
27 "sem.c",
DCMakeLists.txt25 ${CMAKE_CURRENT_LIST_DIR}/sem.c
/hal_rpi_pico-latest/src/common/pico_sync/include/pico/
Dsem.h45 void sem_init(semaphore_t *sem, int16_t initial_permits, int16_t max_permits);
53 int sem_available(semaphore_t *sem);
64 bool sem_release(semaphore_t *sem);
74 void sem_reset(semaphore_t *sem, int16_t permits);
83 void sem_acquire_blocking(semaphore_t *sem);
96 bool sem_acquire_timeout_ms(semaphore_t *sem, uint32_t timeout_ms);
109 bool sem_acquire_timeout_us(semaphore_t *sem, uint32_t timeout_us);
123 bool sem_acquire_block_until(semaphore_t *sem, absolute_time_t until);
134 bool sem_try_acquire(semaphore_t *sem);
/hal_rpi_pico-latest/test/pico_sem_test/
Dpico_sem_test.c16 semaphore_t sem; in main() local
19 sem_init(&sem, 1, 1); in main()
24 PICOTEST_CHECK(sem_try_acquire(&sem), "available permit not acquired"); in main()
25 PICOTEST_CHECK(!sem_try_acquire(&sem), "success with no permits"); in main()
/hal_rpi_pico-latest/src/rp2_common/pico_async_context/
Dasync_context_poll.c21 sem_init(&self->sem, 1, 1); in async_context_poll_init_with_defaults()
26 sem_release(&((async_context_poll_t *)self_base)->sem); in async_context_poll_wake_up()
45 sem_acquire_block_until(&self->sem, absolute_time_min(next_time, until)); in async_context_poll_wait_for_work_until()
Dasync_context_freertos.c181 SemaphoreHandle_t sem; member
190 xSemaphoreGive(call->sem); in handle_sync_func_call()
200 call.sem = xSemaphoreCreateBinary(); in async_context_freertos_execute_sync()
203 xSemaphoreTake(call.sem, portMAX_DELAY); in async_context_freertos_execute_sync()
205 vSemaphoreDelete(call.sem); in async_context_freertos_execute_sync()
Dasync_context_threadsafe_background.c92 semaphore_t sem; member
101 sem_release(&call->sem); in handle_sync_func_call()
147 sem_init(&call.sem, 0, 1); in async_context_threadsafe_background_execute_sync()
150 sem_acquire_blocking(&call.sem); in async_context_threadsafe_background_execute_sync()
/hal_rpi_pico-latest/src/rp2_common/pico_async_context/include/pico/
Dasync_context_poll.h30 semaphore_t sem; member