72 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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_ */
 | 
						|
 |