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

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

?? taskvarlib.c

?? VxWorks操作系統內核源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
*         }**     if ((opGlobal = (OP_GLOBAL *) malloc (sizeof (OP_GLOBAL))) == NULL)*         {*         printErr ("operator%d: can't malloc opGlobal\en", opNum);*         taskSuspend (0);*         }*     ...*     }* .CE** RETURNS:* OK, or ERROR if memory is insufficient for the task variable descriptor.** INTERNAL* The first time this routine is called the task switch and delete* routines, taskVarSwitchHook() and taskVarDeleteHook(), are installed.** SEE ALSO: taskVarDelete(), taskVarGet(), taskVarSet()*/STATUS taskVarAdd    (    int tid,    /* ID of task to have new variable */    int *pVar   /* pointer to variable to be switched for task */    )    {    FAST WIND_TCB *pTcb = taskTcb (tid);    FAST TASK_VAR *pTaskVar;    int	level;    /* make sure task variable facility is installed */    if (taskVarInit () != OK)	return (ERROR);    /* allocate descriptor for new task variable */    pTaskVar = (TASK_VAR *) malloc (sizeof (TASK_VAR));    if (pTaskVar == NULL)	return (ERROR);    pTaskVar->address = pVar;    pTaskVar->value   = *pVar;    /*     * Link new task variable into list in stack header.  Locking interrupts     * was chosen over task locking since locking and unlocking interrupts is     * is much faster than task locking and very little code is in the     * critical section.     */    level = intLock ();    pTaskVar->next = pTcb->pTaskVar;    pTcb->pTaskVar = pTaskVar;    intUnlock (level);    return (OK);    }/********************************************************************************* taskVarDelete - remove a task variable from a task** This routine removes a specified task variable, <pVar>, from the specified* task's context.  The private value of that variable is lost.** RETURNS* OK, or* ERROR if the task variable does not exist for the specified task.** SEE ALSO: taskVarAdd(), taskVarGet(), taskVarSet()*/STATUS taskVarDelete    (    int tid,    /* ID of task whose variable is to be removed */    int *pVar   /* pointer to task variable to be removed */    )    {    FAST TASK_VAR **ppTaskVar;		/* ptr to ptr to next node */    FAST TASK_VAR *pTaskVar;    WIND_TCB *pTcb = taskTcb (tid);    if (pTcb == NULL)			/* check that task is valid */	return (ERROR);    /* find descriptor for specified task variable */    for (ppTaskVar = &pTcb->pTaskVar;	 *ppTaskVar != NULL;	 ppTaskVar = &((*ppTaskVar)->next))	{	pTaskVar = *ppTaskVar;	if (pTaskVar->address == pVar)	    {	    /* if active task, replace background value */	    if (taskIdCurrent == pTcb)		*pVar = pTaskVar->value;	    *ppTaskVar = pTaskVar->next;/* delete variable from list */	    free ((char *)pTaskVar);	/* free storage of deleted cell */	    return (OK);	    }	}    /* specified address is not a task variable for specified task */    errnoSet (S_taskLib_TASK_VAR_NOT_FOUND);    return (ERROR);    }/********************************************************************************* taskVarGet - get the value of a task variable** This routine returns the private value of a task variable for a* specified task.  The specified task is usually not the calling task,* which can get its private value by directly accessing the variable.* This routine is provided primarily for debugging purposes.** RETURNS:* The private value of the task variable, or* ERROR if the task is not found or it* does not own the task variable.** SEE ALSO: taskVarAdd(), taskVarDelete(), taskVarSet()*/int taskVarGet    (    int tid,            /* ID of task whose task variable is to be retrieved */    int *pVar           /* pointer to task variable */    )    {    FAST TASK_VAR *pTaskVar;		/* ptr to next node */    WIND_TCB *pTcb = taskTcb (tid);    if (pTcb == NULL)	return (ERROR);    /* find descriptor for specified task variable */    for (pTaskVar = pTcb->pTaskVar;	 pTaskVar != NULL;	 pTaskVar = pTaskVar->next)	{	if (pTaskVar->address == pVar)	    return (taskIdCurrent == pTcb ? *pVar : pTaskVar->value);	}    /* specified address is not a task variable for specified task */    errnoSet (S_taskLib_TASK_VAR_NOT_FOUND);    return (ERROR);    }/********************************************************************************* taskVarSet - set the value of a task variable** This routine sets the private value of the task variable for a specified* task.  The specified task is usually not the calling task, which can set* its private value by directly modifying the variable.  This routine is* provided primarily for debugging purposes.** RETURNS:* OK, or* ERROR if the task is not found or it* does not own the task variable.** SEE ALSO: taskVarAdd(), taskVarDelete(), taskVarGet()*/STATUS taskVarSet    (    int tid,    /* ID of task whose task variable is to be set */    int *pVar,  /* pointer to task variable to be set for this task */    int value   /* new value of task variable */    )    {    FAST TASK_VAR *pTaskVar;	/* ptr to next node */    WIND_TCB *pTcb = taskTcb (tid);    if (pTcb == NULL)	return (ERROR);    /* find descriptor for specified task variable */    for (pTaskVar = pTcb->pTaskVar;	 pTaskVar != NULL;	 pTaskVar = pTaskVar->next)	{	if (pTaskVar->address == pVar)	    {	    if (taskIdCurrent == pTcb)		{		*pVar = value;		}	    else		pTaskVar->value = value;	    return (OK);	    }	}    /* specified address is not a task variable for specified task */    errnoSet (S_taskLib_TASK_VAR_NOT_FOUND);    return (ERROR);    }/********************************************************************************* taskVarInfo - get a list of task variables of a task** This routine provides the calling task with a list of all of the task* variables of a specified task.  The unsorted array of task variables is* copied to <varList>.** CAVEATS* Kernel rescheduling is disabled with taskLock() while task variables are* looked up.  There is no guarantee that all the task variables are still* valid or that new task variables have not been created by the time this* routine returns.** RETURNS: The number of task variables in the list.*/int taskVarInfo    (    int tid,            /* ID of task whose task variable is to be set */    TASK_VAR varList[], /* array to hold task variable addresses */    int maxVars         /* maximum variables varList can accommodate */    )    {    FAST TASK_VAR *pTaskVar;			/* ptr to next node */    WIND_TCB *	   pTcb	  = taskTcb (tid);    int		   active = 0;    if (pTcb == NULL)	return (ERROR);    taskLock ();				/* LOCK PREEMPTION */    for (pTaskVar = pTcb->pTaskVar;	 (pTaskVar != NULL) && (active < maxVars);	 pTaskVar = pTaskVar->next, active ++)	{	varList[active] = *pTaskVar;	}    taskUnlock ();				/* UNLOCK PREEMPTION */    return (active);    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆国产在线观看| 欧美午夜精品久久久久久孕妇 | 91国偷自产一区二区三区成为亚洲经典| 视频在线观看一区| 一区二区三区精品在线| 中文字幕在线播放不卡一区| 欧美国产欧美亚州国产日韩mv天天看完整| 日韩精品一区二区三区在线观看| 成人免费在线视频| 亚洲自拍偷拍九九九| 午夜精品一区二区三区三上悠亚| 亚洲欧美国产77777| 亚洲欧美一区二区视频| 亚洲码国产岛国毛片在线| 亚洲人成在线观看一区二区| 亚洲美女免费视频| 亚洲一区二区三区四区中文字幕| 亚洲丰满少妇videoshd| 日韩中文字幕亚洲一区二区va在线| 午夜影院久久久| 免费观看一级欧美片| 极品瑜伽女神91| 国产suv精品一区二区883| 成人性色生活片| 91啪在线观看| 欧美午夜寂寞影院| 日韩欧美资源站| 久久久久一区二区三区四区| 国产精品久久久久久久久晋中| 自拍偷拍亚洲欧美日韩| 亚洲精品国产第一综合99久久| 午夜私人影院久久久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 激情综合色播五月| 波波电影院一区二区三区| 欧美影院一区二区| 日韩精品中文字幕一区| 欧美激情一区在线观看| 亚洲午夜一区二区| 久久国产精品99久久久久久老狼| 国产成人精品在线看| 色婷婷久久99综合精品jk白丝| 欧美日韩日日夜夜| 国产亚洲欧洲一区高清在线观看| 国产精品的网站| 日韩和欧美一区二区| 国产精品一区二区久激情瑜伽| 91视频在线观看| 欧美一区二区三区系列电影| 国产日韩欧美制服另类| 亚洲精品国产精华液| 久久99久久精品欧美| 99久久久国产精品免费蜜臀| 91精品国产入口在线| 国产欧美日韩精品在线| 亚洲成av人片在线观看无码| 国产麻豆视频一区二区| 欧美视频在线一区| 久久综合九色综合欧美亚洲| 夜夜嗨av一区二区三区四季av | 国产伦精一区二区三区| 91麻豆文化传媒在线观看| 日韩免费性生活视频播放| 国产精品对白交换视频| 久久se精品一区精品二区| 在线视频一区二区三区| 久久精品一区二区三区不卡 | 99riav一区二区三区| 欧美一区二区久久久| 亚洲女同ⅹxx女同tv| 国产一区二区免费视频| 欧美三级韩国三级日本三斤| 国产午夜精品理论片a级大结局 | 91女厕偷拍女厕偷拍高清| 日韩视频一区二区在线观看| 亚洲人午夜精品天堂一二香蕉| 狠狠色丁香久久婷婷综合_中| 欧美视频自拍偷拍| 最新成人av在线| 国产盗摄女厕一区二区三区| 欧美另类一区二区三区| 亚洲色图丝袜美腿| 成人中文字幕合集| 久久综合九色综合97_久久久| 午夜一区二区三区在线观看| 色综合天天综合| 国产精品你懂的| 国产精品99久久久久久似苏梦涵 | 激情综合色综合久久综合| 欧美日本国产视频| 一区二区三区欧美亚洲| 不卡一区二区中文字幕| 久久久久久久久久久久电影| 美国毛片一区二区三区| 欧美老人xxxx18| 一区二区国产盗摄色噜噜| 99re成人在线| 最新热久久免费视频| 国产jizzjizz一区二区| 国产午夜精品久久久久久久| 另类调教123区| 欧美一区二区三区爱爱| 免费的国产精品| 日韩欧美久久一区| 日韩不卡在线观看日韩不卡视频| 欧美日韩激情在线| 亚洲一区二区高清| 欧美色图一区二区三区| 亚洲一区二区在线免费观看视频| 色综合天天综合网国产成人综合天| 综合在线观看色| 色婷婷国产精品久久包臀| 亚洲欧洲综合另类| 在线观看日韩国产| 亚洲国产人成综合网站| 欧美日韩一区二区欧美激情| 亚洲无线码一区二区三区| 欧美三级在线看| 首页国产丝袜综合| 日韩女优制服丝袜电影| 国产一区视频导航| 欧美激情中文字幕| 91一区二区在线| 亚洲国产一区二区视频| 91精品国产综合久久精品性色| 久久国内精品视频| 国产亚洲欧洲一区高清在线观看| 高清国产一区二区三区| 亚洲欧美偷拍三级| 欧美日韩一区二区三区免费看 | 一本到一区二区三区| 依依成人综合视频| 欧美日韩mp4| 久久草av在线| 国产精品久久久久久户外露出| 色8久久精品久久久久久蜜| 亚洲成人av免费| 亚洲精品在线免费观看视频| 成人免费不卡视频| 亚洲一区二区中文在线| 日韩欧美国产小视频| 国产91丝袜在线播放0| 亚洲日本va在线观看| 制服丝袜成人动漫| 粗大黑人巨茎大战欧美成人| 亚洲精品你懂的| 日韩午夜激情视频| 国产福利一区二区三区视频在线| 一区二区三区成人| 欧美一级二级三级蜜桃| 成人午夜又粗又硬又大| 亚洲第一狼人社区| 欧美激情在线看| 欧美日本乱大交xxxxx| 国产成人午夜片在线观看高清观看| 亚洲另类中文字| 欧美一级高清片| 91麻豆高清视频| 久久国产尿小便嘘嘘尿| 日韩中文字幕亚洲一区二区va在线| 337p日本欧洲亚洲大胆精品| 色偷偷久久人人79超碰人人澡| 精品制服美女久久| 亚洲自拍偷拍网站| 中文文精品字幕一区二区| 欧美日韩国产成人在线91| 国产成人在线视频免费播放| 午夜视频一区在线观看| 国产精品久久久久久久久图文区| 日韩一二三区不卡| 色综合网站在线| 国产乱理伦片在线观看夜一区| 亚洲一线二线三线视频| 欧美国产一区二区| 日韩免费成人网| 欧美视频三区在线播放| 国产成人av一区二区三区在线| 五月婷婷久久综合| 亚洲日本青草视频在线怡红院| 国产亚洲成年网址在线观看| 欧美日本在线一区| 色综合一区二区三区| 国产福利一区在线| 精品中文字幕一区二区| 天天av天天翘天天综合网色鬼国产| 国产精品久久久久久久久免费樱桃 | 欧美群妇大交群的观看方式| 99riav久久精品riav| 国产精品综合在线视频| 人人精品人人爱| 午夜免费久久看| 伊人色综合久久天天人手人婷| 国产精品久久久久久久午夜片| 欧美精品一区二区三区久久久 | 欧美日韩视频在线一区二区| 色综合久久久网| 成人国产免费视频| 国产福利精品一区| 黄一区二区三区| 国产在线精品免费|