/**************************************************************************//**
 * @item     CosyOS-III Kernel
 * @file     sv_pend.h
 * @brief    PSV服务
 * @details  仅在 PendSV中断 中调用并执行。
 * @author   迟凯峰
 * @version  v3.0.0
 * @date     2026.07.21
 ******************************************************************************/

#ifndef __SV_PEND_H
#define __SV_PEND_H

/**
 @addtogroup CosyOS_内核服务
 @{
 *//**
 \defgroup   PSV服务
 \brief      仅在 PendSV中断 中调用并执行的服务。
             包括通过挂起服务调用（iPendSVC）间接调用，在挂起服务钩子（pendsv_hook）中调用。
             如果通过挂起服务调用（iPendSVC）间接调用，就是 FIFO服务；
             如果通过挂起服务钩子（pendsv_hook） 调用，就是 FIAG服务。
 @{
 */

#define sPSV_ClearDelay()             sc_clear_delay()            /*!< 清除就绪延时 */
#define sPSV_ResumeTask(htask)        sc_resume_task(htask)       /*!< 恢复任务 */
#define sPSV_SuspendTask(htask)       sc_suspend_task(htask)      /*!< 挂起任务 */
#define sPSV_DeleteTask(htask)        sc_delete_task(htask)       /*!< 删除任务 */
#define sPSV_ResetTask(htask, status) sc_reset_task(htask, status)/*!< 重置任务 */
#define sPSV_ClearBlock(htask)        sc_clear_block(htask)       /*!< 清除阻塞（状态）*/
#define sPSV_SetBlock(htask, tick)    sc_set_block(htask, tick)   /*!< 设置阻塞（时间）*/
#define sPSV_SetTaskPri(htask, npri)  sc_set_taskpri(htask, npri) /*!< 设置任务优先级 */
#define sPSV_GiveBin(bin)             sc_write_binary(&bin, true) /*!< 给予二值信号量 */

/** @} */
/** @} */

#endif
