亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? trglib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* trgLib.c - trigger events control library  *//* Copyright 1994-2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01x,21mar02,tcr  Fix SPR 7446501w,11oct01,tcr  Fix SPR 70133 - trigger action routine cannot take                 zero-valued argument01v,02mar99,dgp  removed reference to e() from trgEvent()01u,11sep98,cjtc deferred action queue for triggering modified01t,28aug98,dgp  FCS man page edit01s,28may98,dgp  final doc editing for WV 2.0 beta01r,07may98,dgp  clean up man pages for WV 2.0 beta release01q,08apr98,pr   added some comments and some cleanup01p,25mar98,pr   deleted portWorkQAdd1 (see rBuffLib.c)01p,25mar98,pr   added trgEvent function01o,22mar98,pr   replaced workQAdd1 with portable version 01n,21feb98,pr   commented out hitCnt reset in trgOn. Fix obj enable in 		 trgCheck.01m,22feb98,pr   added hitCnt. Cleanup01l,13feb98,nps  made trgDelete more defensive by verifying object exists.01k,12feb98,pr   moved trgShow to trgShow.c. Added hitCnt support.01j,27jan98,nps  Fix merge errors.01i,27jan98,nps  modified switch so all current deferred actions are                 handled in the same way.                 incorporated support for library condition fns.01h,23jan98,pr   moved _func_trgCheck initialization, replaced macro names.01g,16jan98,pr   modified option for msgQSend. 01f,14dec97,pr   moved declaration of some global variables into funcBind.c01e,14dec97,pr   deleted reference to myCnt01d,13dec97,pr   deleted some temporary variables. Reduced the number of		 arguments passed to trgCheck01c,20nov97,pr   added the deferred execution of tasks, fixed some bugs                 added trgChainSet, trgAddTcl                 modified trgCondTest, added support for EVENT_ANY_EVENT01b,09oct97,pr   modified the prototype: changed the structure in an obj		 			 replaced the list with an array					 modified the search algorithm01a,25jun97,pr   written*//*DESCRIPTIONThis library provides the interface for triggering events.  The routinesprovide tools for creating, deleting, and controlling triggers.  However,in most cases it is preferable to use the GUI to create and managetriggers, since all order and dependency factors are automaticallyaccounted for there.The event types are defined as in WindView. Triggering and WindView sharethe same instrumentation points. Furthermore, one of the main uses oftriggering is to start and stop WindView instrumentation.  Triggering isstarted by the routine trgOn(), which sets the shared variable 'evtAction'.Once the variable is set, when an instrumented point is hit, trgCheck() iscalled. The routine looks for triggers that apply to this event.  Theroutine trgOff() stops triggering.  The routine trgEnable() enables aspecific trigger that was previously disabled with trgDisable(). (Atcreation time all triggers are enabled by default.) This routine alsochecks the number of triggers currently enabled, and when this is zero, itturns triggering off.NOTE: It is important to create a trigger before calling trgOn(). trgOn()checks the trigger list to see if there is at least one trigger there, and ifnot, it exits without setting 'evtAction'.INCLUDE FILES: trgLibP.hSEE ALSO: .I WindView User's Guide*/#include "vxWorks.h"#include "intLib.h"#include "taskLib.h"#include "stdio.h"#include "logLib.h"#include "private/trgLibP.h"#include "private/kernelLibP.h"#include "private/windLibP.h"#include "private/workQLibP.h"/* extern */extern int trgCnt;int trgNone;extern  VOIDFUNCPTR _func_trgCheck;#if (CPU_FAMILY == I80X86)extern  void portWorkQAdd1();#endif /* CPU_FAMILY == I80X86 *//* global */UINT 	trgWorkQReader;			/* work queue index */UINT 	trgWorkQWriter;			/* work queue index */BOOL	trgWorkQFullNotify;		/* work queue full notification*/SEM_ID	trgDefSem;OBJ_CLASS trgClass;                   /* trg object Class */CLASS_ID  trgClassId = &trgClass;     /* trg class ID */MSG_Q_ID trgActionDefMsgQId = NULL;UINT32 trgClassList[] = {TRG_CLASS_1, TRG_CLASS_2, TRG_CLASS_3, TRG_CLASS_4, TRG_CLASS_5, TRG_CLASS_6};/* local */TRIGGER_ID  trgWorkQ[TRG_MAX_REQUESTS];TRIGGER_ID  * trgList;LOCAL BOOL trgLibInstalled = FALSE;   /* protect from multiple inits */LOCAL BOOL trgActionDefStarted = FALSE;   /* protect from multiple inits */void trgCheck(event_t event, int index, int obj,int arg1,int arg2,int arg3,int arg4,int arg5);TRIGGER_ID trgAdd(event_t event, int status, int contextType, UINT32 contextId,                   OBJ_ID  objId, int conditional, int condType, int * condEx1, 		  int condOp, int condEx2, BOOL disable, TRIGGER_ID chain, 		  int actionType, FUNCPTR actionFunc, BOOL actionDef, int arg);STATUS trgInit();STATUS trgDelete(TRIGGER_ID trgId);void trgOff();/********************************************************************************* trgLibInit - initialize the triggering library** This routine initializes the trigger class. Triggers are VxWorks objects * and therefore require a class to be initialized.** RETURNS: OK or ERROR.**/STATUS trgLibInit (void)    {    int index;    if ((!trgLibInstalled) &&        (classInit (trgClassId, sizeof(TRIGGER),                    OFFSET(TRIGGER, objCore), (FUNCPTR) trgAdd,                    (FUNCPTR) trgInit, (FUNCPTR) trgDelete) == OK))        {        trgList = (TRIGGER_ID *)malloc (sizeof(TRIGGER_ID)*TRG_MAX_REQUESTS );	if ( trgInit() != OK)	    return(ERROR);	trgWorkQFullNotify   = FALSE;        trgWorkQReader = 0;        trgWorkQWriter = 0;        for (index = 0 ; index < TRG_MAX_REQUESTS ; index ++)            trgWorkQ[index] = NULL;        trgLibInstalled = TRUE;        }    return ((trgLibInstalled) ? OK : ERROR);    }/********************************************************************************* trgInit - Initializes triggering list and function** initialize/reset the list and the _func_trgCheck pointer** NOMANUAL**/STATUS trgInit ()    {    int index;    if ( trgList == NULL )	return(ERROR);    for (index = 0 ; index < TRG_MAX_REQUESTS ; index ++)        trgList[index] = NULL;    /* set the function for the event points */    _func_trgCheck = (VOIDFUNCPTR) trgCheck;    return(OK);                             }/********************************************************************************* trgActionDefInit - Initializes the daemon for deferred execution of tasks** Tasks can be executed in deferred mode (this is the default). That is, if* they are in a critical part of the code (i.e. Kernel state) their execution* does not occur until they are out of the critical code.* This task will initialize the task for the deferred execution, * trgActionDefPerform.** NOMANUAL**/STATUS trgActionDefStart ()    {    if ( trgActionDefStarted == TRUE)	return (OK);    if ((!trgLibInstalled) && (trgLibInit () != OK))        return (ERROR);    taskSpawn ("trgActDef",         TRG_ACT_PRIORITY,         TRG_ACT_OPTIONS,         TRG_ACT_SIZE,         trgActionDefPerform,         0,0,0,0,0,0,0,0,0,0);    trgActionDefStarted = TRUE;    return (OK);    }/********************************************************************************* trgWorkQReset - Resets the trigger work queue task and queue** When a trigger fires, if the assocated action requires a function to be called* in "safe" mode, a pointer to the required function will be placed on a queue* known as the "triggering work queue". A system task "tActDef" is spawned to* action these requests at task level. Should the user have need to reset this* work queue (e.g. if a called task causes an exception which causes the* trgActDef task to be SUSPENDED, or if the queue gets out of sync and becomes* unresponsive), trgWorkQReset() may be called.** Its effect is to delete the trigger work queue task and its associated * resources and then recreate them. Any entries pending on the triggering work* queue will be lost. Calling this function with triggering on will result in* triggering being turned off before the queue reset takes place. It is the* responsibility of the user to turn triggering back on.** RETURNS: OK, or ERROR if the triggering task and its associated resources* cannot be deleted and recreated.**/STATUS trgWorkQReset (void)    {    int index;    if ((!trgLibInstalled) && (trgLibInit () != OK))        return (ERROR);                             if (TRG_ACTION_IS_SET)        trgOff();    if (trgActionDefStarted != TRUE)	return OK;    if (taskDelete (taskNameToId ("trgActDef")) == ERROR)	return ERROR;    trgActionDefStarted = FALSE;    if (semDelete (trgDefSem) == ERROR)	return ERROR;    /* re-initialise the work queue */    trgWorkQFullNotify   = FALSE;    trgWorkQReader = 0;    trgWorkQWriter = 0;    for (index = 0 ; index < TRG_MAX_REQUESTS ; index ++)        trgWorkQ[index] = NULL;    /* restart the work queue task */    return (trgActionDefStart ());    }/********************************************************************************* trgEvtToIndex - calculate the list the trigger belongs to given the event ID ** The routine returns the index of the list where the trigger belongs to. The* index are based on WindView event type classification.** NOMANUAL**/int trgEvtToIndex     (    event_t event    )    {    if (event == EVENT_ANY_EVENT)	return(TRG_ANY_EVENT_INDEX);    if (IS_CLASS1_EVENT(event))	return(TRG_CLASS1_INDEX);    if (IS_CLASS2_EVENT(event))	return(TRG_CLASS2_INDEX);	    if (IS_CLASS3_EVENT(event))	return(TRG_CLASS3_INDEX);	    if (IS_USER_EVENT(event))	return(TRG_USER_INDEX);/* this is probably never reached, since it is a subclass of class1 */    if (IS_INT_ENT_EVENT(event))	return(TRG_INT_ENT_INDEX);	#if 0	    if (IS_CONTROL_EVENT(event))	return(TRG_CONTROL_INDEX);#endif    return(ERROR);    }/********************************************************************************* trgAddTcl - calls trgAdd but accepts one single parameter** Since Tcl does not take more than 10 parameters, they have been saved in one* memory location. This routine retrieves the values and passes them to trgAdd.** NOMANUAL**/TRIGGER_ID trgAddTcl    (    char * 	buff     )    {    int * buffIndex = (int *)buff;    int         event;    int         status;    int         conditional;    int         condType, contextType, actionType;    int         * condEx1, condOp, condEx2;    int         actionArg;    UINT32      contextId;    OBJ_ID      objId;    BOOL        disable, actionDef;    FUNCPTR     actionFunc;    TRIGGER     *chain;    event = (int) *buffIndex++;    status = (int) *buffIndex++;    contextType = (int) *buffIndex++;    contextId = (UINT32) *buffIndex++;    objId = (OBJ_ID) *buffIndex++;    conditional = (int) *buffIndex++;    condType = (int) *buffIndex++;    condEx1 = (int *) *buffIndex++;    condOp = (int) *buffIndex++;    condEx2 = (int) *buffIndex++;    disable = (BOOL) *buffIndex++;    chain = (TRIGGER *) *buffIndex++;    actionType = (int) *buffIndex++;    actionFunc = (FUNCPTR) *buffIndex++;    actionDef = (BOOL) *buffIndex++;    actionArg = (int) *buffIndex;#if 0 printf ("event = %hd \n", (event_t)event); printf(" %d\n", status); printf(" %d \n", contextType); printf(" %d\n", contextId); printf(" %p\n", objId); printf(" %d\n", conditional); printf("%d \n", condType); printf(" %p\n", condEx1); printf(" %d\n", condOp); printf(" %d\n", condEx2); printf(" %d\n", disable); printf(" %p\n", chain); printf(" %d\n", actionType); printf(" %p\n", actionFunc); printf(" %d\n", actionDef); printf(" %d\n", actionArg);#endif    return (trgAdd ( (event_t)event, status, contextType, contextId, objId, conditional, 	        condType, condEx1, condOp, condEx2, disable, chain, actionType, 	        actionFunc, actionDef, actionArg ));    } /********************************************************************************* trgAdd - add a new trigger to the trigger list** This routine creates a new trigger and adds it to the proper trigger list.  It* takes the following parameters:* .iP <event> 50* as defined in eventP.h for WindView, if given.* .iP <status>* the initial status of the trigger (enabled or disabled).* .iP <contextType>* the type of context where the event occurs.* .iP <contextId>* the ID (if any) of the context where the event occurs.* .iP <objectId>* if given and applicable.* .iP <conditional>* the indicator that there is a condition on the trigger.* .iP <condType>* the indicator that the condition is either a variable or a function.* .iP <condEx1>* the first element in the comparison.* .iP <condOp>* the type of operator (==, !=, <, <=, >, >=, |, &).* .iP <condEx2>* the second element in the comparison (a constant).* .iP <disable>* the indicator of whether the trigger must be disabled once it is hit.* .iP <chain>* a pointer to another trigger associated to this one (if any).* .iP <actionType>* the type of action associated with the trigger (none, func, lib).* .iP <actionFunc>* the action associated with the trigger (the function).* .iP <actionDef>* the indicator of whether the action can be deferred (deferred is the default).* .iP <actionArg>* the argument passed to the function, if any.* .LP** Attempting to call trgAdd whilst triggering is enabled is not allowed* and will return NULL.** RETURNS: TRIGGER_ID, or NULL if either the trigger ID can not be allocated,* or if called whilst triggering is enabled.** SEE ALSO: trgDelete()*/TRIGGER_ID trgAdd     (    event_t 	event,     int 	status,    int 	contextType,    UINT32 	contextId,    OBJ_ID  	objId,     int    	conditional,     int    	condType,     int		* condEx1,     int		condOp,     int		condEx2,     BOOL  	disable,     TRIGGER	*chain,     int 	actionType,     FUNCPTR 	actionFunc,     BOOL    	actionDef,     int	    	actionArg    )    {    TRIGGER_ID trgId, pTrg;    int index;    if ( TRG_ACTION_IS_SET )        return (NULL);    if ((!trgLibInstalled) && (trgLibInit () != OK))        return (NULL);                                 if ((trgId = (TRIGGER_ID)objAlloc(trgClassId)) == NULL)       return(NULL);    objCoreInit (&trgId->objCore, trgClassId);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久夜色精品国产欧美乱极品| 欧美日韩情趣电影| 亚洲成人av福利| 久久婷婷国产综合精品青草 | 日产精品久久久久久久性色| 久久久99精品免费观看不卡| 欧美三级视频在线观看| 成人精品国产一区二区4080| 免费的国产精品| 亚洲最大色网站| 国产精品高潮久久久久无| 日韩色视频在线观看| 欧美视频一区在线观看| 成人av电影在线网| 国产麻豆视频一区| 日本怡春院一区二区| 一区二区三区在线观看网站| 中文一区二区完整视频在线观看| 欧美精品久久99| 欧美日韩一区二区三区在线| 91视频免费观看| 不卡av在线网| 大白屁股一区二区视频| 国产在线观看一区二区| 久久99精品久久久久久| 免费观看91视频大全| 亚洲v精品v日韩v欧美v专区| 亚洲国产另类av| 亚洲一区二区三区爽爽爽爽爽 | 久久综合综合久久综合| 午夜欧美2019年伦理| 一区二区不卡在线播放 | 亚洲一区欧美一区| 亚洲激情自拍偷拍| 亚洲视频一区二区在线| 日韩伦理av电影| 国产乱码一区二区三区| 麻豆精品国产91久久久久久| 日本在线不卡视频| 久久成人综合网| 黄网站免费久久| 国产一区激情在线| 国产大陆a不卡| 成人一区二区在线观看| 成人黄色小视频| 91麻豆免费视频| 欧美日韩中文字幕一区二区| 欧美日韩精品久久久| 在线观看www91| 欧美另类z0zxhd电影| 欧美蜜桃一区二区三区| 欧美电影一区二区| 日韩美女视频一区二区在线观看| 精品久久久久一区| 国产亚洲一本大道中文在线| 国产精品入口麻豆九色| 中文字幕日韩一区| 亚洲综合激情小说| 日韩av不卡在线观看| 激情深爱一区二区| 成人sese在线| 欧美亚洲国产一区二区三区va| 欧美日韩国产a| 精品国产免费人成在线观看| 中文字幕欧美国产| 亚洲高清三级视频| 韩国一区二区三区| 99re这里只有精品首页| 91亚洲精品乱码久久久久久蜜桃| 欧美午夜精品一区| 日韩一区二区免费在线电影| 国产拍欧美日韩视频二区| 亚洲精品国产无天堂网2021 | 亚洲欧美激情小说另类| 天堂蜜桃一区二区三区| 国产精品一区二区在线播放| 91网站黄www| 日韩欧美精品三级| 国产精品免费视频网站| 日韩二区三区在线观看| 粉嫩在线一区二区三区视频| 在线观看日产精品| 久久综合av免费| 亚洲国产三级在线| 国产白丝精品91爽爽久久 | 国产精品九色蝌蚪自拍| 日韩电影在线一区| 99re成人在线| 精品国产免费人成电影在线观看四季| 亚洲欧洲韩国日本视频| 奇米888四色在线精品| 97超碰欧美中文字幕| 日韩亚洲欧美高清| 亚洲精品免费一二三区| 国产一区在线精品| 91精品久久久久久蜜臀| 中文字幕中文字幕在线一区 | 麻豆成人久久精品二区三区红 | 精品一区二区成人精品| 色噜噜狠狠成人中文综合| 久久久亚洲午夜电影| 日本中文字幕不卡| 欧日韩精品视频| 国产精品国产三级国产三级人妇| 美国十次了思思久久精品导航| 日本久久一区二区| 欧美国产精品专区| 久久不见久久见免费视频1| 日本高清视频一区二区| 久久青草欧美一区二区三区| 日韩黄色小视频| 欧美三级电影在线看| 国产精品超碰97尤物18| 国产美女久久久久| 欧美一区二区三区人| 亚洲一区二区三区在线播放| 91在线免费播放| 中文字幕高清不卡| 国产一区二三区| 日韩精品一区二区三区视频播放| 亚洲444eee在线观看| 91亚洲精品乱码久久久久久蜜桃 | 精品国产一区二区精华| 日韩影院精彩在线| 欧美日韩免费高清一区色橹橹 | 成人免费电影视频| 国产欧美一区二区三区沐欲| 国内成人自拍视频| 精品国产乱码久久| 极品销魂美女一区二区三区| 日韩欧美一级二级三级| 日本在线不卡一区| 欧美一级久久久| 麻豆成人在线观看| 2021国产精品久久精品| 国内成人免费视频| 久久亚洲精品国产精品紫薇| 国产在线精品一区二区三区不卡| 2023国产精华国产精品| 国产98色在线|日韩| 中文在线资源观看网站视频免费不卡| 国产激情视频一区二区三区欧美| 久久综合网色—综合色88| 国产一区二区精品久久91| 国产日韩影视精品| av在线播放不卡| 亚洲另类春色校园小说| 欧美性xxxxxx少妇| 日韩精品一二三| 精品国产网站在线观看| 高清国产一区二区| 亚洲日本中文字幕区| 欧美日韩另类一区| 狠狠色丁香婷综合久久| 国产欧美精品在线观看| 91网站最新网址| 午夜欧美大尺度福利影院在线看| 日韩欧美中文字幕公布| 国产精品一级黄| 亚洲人成影院在线观看| 欧美日韩国产美| 精品一区二区三区免费毛片爱| 国产精品网站在线观看| 在线一区二区观看| 麻豆一区二区三| 国产精品乱人伦中文| 欧美亚洲高清一区二区三区不卡| 男人的j进女人的j一区| 久久久久国产精品麻豆| 99国产精品久久久久| 免费日韩伦理电影| 中文字幕av资源一区| 欧美日韩一区 二区 三区 久久精品| 免费不卡在线观看| 中文字幕乱码久久午夜不卡| 欧美日韩久久不卡| 国产99久久久精品| 亚洲国产成人精品视频| 国产日韩欧美不卡| 欧美日韩免费一区二区三区视频| 国产乱子伦视频一区二区三区| 亚洲天堂成人在线观看| 日韩丝袜情趣美女图片| 91首页免费视频| 韩国三级电影一区二区| 一区二区三区欧美日韩| 久久综合久久99| 欧美日韩美少妇| 99久久久精品| 国产中文一区二区三区| 亚洲在线视频网站| 欧美激情在线看| 日韩美女一区二区三区四区| 在线免费一区三区| 国产精品亚洲专一区二区三区| 亚洲韩国精品一区| 国产精品久久久久久久久快鸭| 欧美一卡二卡三卡四卡| 日本精品一区二区三区高清| 成人午夜视频网站|