nt9856x/code/vos/include/kwrap/flag.h
2023-03-28 15:07:53 +08:00

72 lines
2.5 KiB
C
Executable File

/*!
********************************************************************************
* \file Flag.h
* \brief
* \project vos
* \chip
* \author Anderson
********************************************************************************
*/
#ifndef _VOS_KER_FLAG_H_
#define _VOS_KER_FLAG_H_
#ifdef __cplusplus
extern "C" {
#endif
/*-----------------------------------------------------------------------------*/
/* Including Files */
/*-----------------------------------------------------------------------------*/
#include "nvt_type.h"
#include "error_no.h"
#include "consts.h"
//! Init/Exit flag
void rtos_flag_init(unsigned long max_flag_num);
void rtos_flag_exit(void);
//! Common api
ER vos_flag_create(ID *p_flgid, T_CFLG *pk_cflg, char *name);
ER vos_flag_destroy(ID flgid);
ER vos_flag_set(ID flgid, FLGPTN setptn);
ER vos_flag_clr(ID flgid, FLGPTN clrptn);
ER vos_flag_wait(PFLGPTN p_flgptn, ID flgid, FLGPTN waiptn, UINT wfmode);
ER vos_flag_wait_timeout(PFLGPTN p_flgptn, ID flgid, FLGPTN waiptn, UINT wfmode, int timeout_tick);
//note:
//1. timeout = -1 to wait forever, the effect is the same as vos_flag_wait
//2. use vos_util_msec_to_tick to convert to ticks
//3. return 0 if condition is met, or negative value if timeout occurred
ER vos_flag_wait_interruptible(PFLGPTN p_flgptn, ID flgid, FLGPTN waiptn, UINT wfmode);
//note: Return E_RLWAI if interrupted, E_OK if conditions are met
FLGPTN vos_flag_chk(ID flgid, FLGPTN chkptn);
char *vos_flag_get_name(ID flgid);
void vos_flag_dump(int (*dump)(const char *fmt, ...));
#if defined(__LINUX)
#define vos_flag_iset vos_flag_set
#define vos_flag_iclr vos_flag_clr
#elif defined(__FREERTOS)
ER vos_flag_iset(ID flgid, FLGPTN setptn); //flag set for ISR (FreeRTOS Only)
ER vos_flag_iclr(ID flgid, FLGPTN clrptn); //flag clear for ISR (FreeRTOS Only)
#endif
// obsolete uitron-style api, please use vos_flag_xxx directly
#define rel_flg vos_flag_destroy
#define cre_flg vos_flag_create
#define del_flg vos_flag_destroy
#define set_flg vos_flag_set
#define iset_flg vos_flag_iset
#define clr_flg vos_flag_clr
#define iclr_flg vos_flag_iclr
#define wai_flg vos_flag_wait
#define kchk_flg vos_flag_chk
#define vos_flg_dump vos_flag_dump
#define OS_CONFIG_FLAG(id) vos_flag_create(&id, NULL, #id)
#ifdef __cplusplus
}
#endif
#endif /* _VOS_KER_FLAG_H_ */