📄 cxewatm.c
字号:
/*********************************************************
Copyright (c) CMX Company. 1999. All rights reserved
*********************************************************/
/* version 5.30 */
#define CMXMODULE 1
#include <cxfuncs.h> /* get cmx include header file */
#include <cxextern.h> /* get cmx include header file */
#if (defined(CMXTRACKER) || defined(WINTRACKER))
#include <cmxtrack.h> /* get cmx include header file */
#endif
/***************************************************************
The following allows a task to wait for 1 or more events to be
set, if they are not. Also a time period may be specified on how
long the task will wait for at least 1 event to be set, in which
the task wants.
MODE:
= 0 nothing
= 1 clear at beginning
= 2 auto clear on match
= 3 both 1 and 2
***************************************************************/
word16 K_Event_Wait(word16 match,word16 timecnt,byte mode)
{
word16 good_bits;
K_I_Disable_Sched(); /* set task block */
if (mode & 0x01) /* see if we should clear specified events at beginning. */
{
activetcb->e_flags &= (~match); /* yes, clear them. */
}
/* see if ANY task flags match */
if (!(activetcb->e_flags & (activetcb->e_match = match)))
{
/* NO, so call CMX function that will suspend task. */
#if (defined(CMXTRACKER) || defined(WINTRACKER))
if (CMXTRACKER_ON)
{
cmxtracker_in4(CXEWATM_CALL,0,timecnt);
}
#endif
if (K_I_Time_Common(timecnt,FLAGS))
{
#if (defined(CMXTRACKER) || defined(WINTRACKER))
if (CMXTRACKER_ON)
{
cmxtracker_in1(CXEWATM_DELAY_K_TIMEOUT);
}
#endif
return(0); /* return the warning: that the time period expired */
}
K_I_Disable_Sched(); /* set task block. */
}
good_bits = activetcb->e_flags & match; /* what event bits matched. */
if (mode & 0x02) /* should we clear the events now? */
{
activetcb->e_flags &= ~match; /* yes, clear them. */
}
#if (defined(CMXTRACKER) || defined(WINTRACKER))
if (CMXTRACKER_ON)
{
cmxtracker_in4(CXEWATM_K_OK,0,good_bits);
}
#endif
K_I_Func_Return(); /* release task lock. */
return(good_bits); /* return events that were set according to mask. */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -