Line data Source code
1 0 : /* 2 : * Copyright (c) 2024 Synopsys. 3 : * 4 : * SPDX-License-Identifier: Apache-2.0 5 : */ 6 : 7 : #ifndef ZEPHYR_INCLUDE_ARCH_ARC_V2_VPX_ARC_VPX_H_ 8 : #define ZEPHYR_INCLUDE_ARCH_ARC_V2_VPX_ARC_VPX_H_ 9 : 10 : #include <zephyr/sys_clock.h> 11 : 12 : /** 13 : * @brief Obtain a cooperative lock on the VPX vector registers 14 : * 15 : * This function is used to obtain a cooperative lock on the current CPU's 16 : * VPX vector registers before the calling thread uses them. Callers 17 : * attempting to obtain the cooperative lock must be already restricted to 18 : * executing on a single CPU, and continue to execute on that same CPU while 19 : * both waiting and holding the lock. 20 : * 21 : * This routine is not callable from an ISR. 22 : * 23 : * @param timeout Waiting period to obtain the lock, or one of the special 24 : * values K_NO_WAIT and K_FOREVER. 25 : * 26 : * @return Zero on success, otherwise error code 27 : */ 28 1 : int arc_vpx_lock(k_timeout_t timeout); 29 : 30 : /** 31 : * @brief Release cooperative lock on the VPX vector registers 32 : * 33 : * This function is used to release the cooperative lock on the current CPU's 34 : * VPX vector registers. It is called after the current thread no longer needs 35 : * to use the VPX vector registers, thereby allowing another thread to use them. 36 : * 37 : * This routine is not callable from an ISR. 38 : */ 39 1 : void arc_vpx_unlock(void); 40 : 41 : /** 42 : * @brief Release cooperative lock on a CPU's VPX vector registers 43 : * 44 : * This function is used to release the cooperative lock on the specified CPU's 45 : * VPX vector registers. This routine should not be used except by a system 46 : * monitor to release the cooperative lock in case the locking thread where it 47 : * is known that the locking thread is unable to release it (e.g. it was 48 : * aborted while holding the lock). 49 : * 50 : * @param cpu_id CPU ID of the VPX vector register set to be unlocked 51 : */ 52 1 : void arc_vpx_unlock_force(unsigned int cpu_id); 53 : 54 : #endif /* ZEPHYR_INCLUDE_ARCH_ARC_V2_VPX_ARC_VPX_H_ */