/* * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ #pragma once #ifdef __cplusplus extern "C" { #endif #include "ulp_riscv_lock_shared.h" /** * @brief Locks are based on the Peterson's algorithm, https://en.wikipedia.org/wiki/Peterson%27s_algorithm * */ /** * @brief Acquire the lock, preventing the ULP from taking until released. Spins until lock is acquired. * * @note The lock is only designed for being used by a single thread on the main CPU, * it is not safe to try to acquire it from multiple threads. * * @param lock Pointer to lock struct, shared with ULP */ void ulp_riscv_lock_acquire(ulp_riscv_lock_t *lock); /** * @brief Release the lock * * @param lock Pointer to lock struct, shared with ULP */ void ulp_riscv_lock_release(ulp_riscv_lock_t *lock); #ifdef __cplusplus } #endif