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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? taskvarlib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* taskVarLib.c - task variables support library *//* Copyright 1984-1993 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01z,21jan93,jdi  documentation cleanup for 5.1.01y,02oct92,jcf  added task validity check to switch hook.01x,18jul92,smb  changed errno.h to errnoLib.h.01w,07jul92,ajm  removed unnecesary cacheClear calls for 04001v,04jul92,jcf  scalable/ANSI/cleanup effort.01u,03jul92,jwt  converted cacheClearEntry() calls to cacheClear() for 5.1.01t,26may92,rrr  the tree shuffle01s,21dec91,gae  added includes for ANSI.01r,19nov91,rrr  shut up some ansi warnings.01q,04oct91,rrr  passed through the ansification filter                  -changed functions to ansi style		  -fixed #else and #endif		  -changed VOID to void		  -changed copyright notice01p,27aug91,shl  added cache coherency calls for MC68040 support.01o,220may1,jdi	 documentation tweak.01n,05apr91,jdi	 documentation -- removed header parens and x-ref numbers;		 doc review by dnw.01m,24mar91,jdi  documentation cleanup.01l,01oct90,jcf  added taskVarInfo().01k,01aug90,jcf  changed tcb taskVar to pTaskVar.		 added include of taskVarLib.h.01j,19jul90,dnw  mangen fix01i,14apr90,jcf  removed tcb extension dependencies.01h,14mar90,jdi  documentation cleanup.01g,08apr89,dnw  added taskVarInit().01f,17aug88,gae  documentation.01d,22jun88,dnw  name tweaks.01c,30may88,dnw  changed to v4 names.01b,08apr88,gae  added taskId parm. to taskVar{Add,Del}();		 made taskVar{Get,Set}() work with active task.		 Fixed fatal bug in taskVarDel() of not replacing bg value.		 Added taskVarDeleteHook() to cleanup after tasks.		 Lint. Documentation.01a,25jan88,jcf  written by extracting from vxLib.c.*//*DESCRIPTIONVxWorks provides a facility called "task variables," which allows4-byte variables to be added to a task's context, and thevariables' values to be switched each time a task switch occurs to orfrom the calling task.  Typically, several tasks declare the samevariable (4-byte memory location) as a task variable and treat thatmemory location as their own private variable.  For example, thisfacility can be used when a routine must be spawned more than once asseveral simultaneous tasks.The routines taskVarAdd() and taskVarDelete() are used to add or deletea task variable.  The routines taskVarGet() and taskVarSet() are used to getor set the value of a task variable.NOTEIf you are using task variables in a task delete hook(see taskHookLib), refer to the manual entry for taskVarInit()for warnings on proper usage.INCLUDE FILES: taskVarLib.hSEE ALSO: taskHookLib,.pG "Basic OS"*//* LINTLIBRARY */#include "vxWorks.h"#include "stdlib.h"#include "taskHookLib.h"#include "taskVarLib.h"#include "taskLib.h"#include "errnoLib.h"/* forward static functions */static void taskVarDeleteHook (WIND_TCB *pTcb);static void taskVarSwitchHook (WIND_TCB *pOldTcb, WIND_TCB *pNewTcb);/********************************************************************************* taskVarInit - initialize the task variables facility** This routine initializes the task variables facility.  It installs task* switch and delete hooks used for implementing task variables.* If taskVarInit() is not called explicitly, taskVarAdd() will call it* automatically when the first task variable is added.** After the first invocation of this routine, subsequent invocations* have no effect.** WARNING* Order dependencies in task delete hooks often involve* task variables.  If a facility uses task variables and has a* task delete hook that expects to use those task variables,* the facility's delete hook must run before the task* variables' delete hook.  Otherwise, the task variables* will be deleted by the time the facility's delete hook runs.** VxWorks is careful to run the delete hooks in reverse of the order in* which they were installed.  Any facility that has a delete hook that will* use task variables can guarantee proper ordering by calling taskVarInit()* before adding its own delete hook.** Note that this is not an issue in normal use of task variables.  The issue* only arises when adding another task delete hook that uses task variables.** Caution should also be taken when adding task variables from within* create hooks.  If the task variable package has not been installed via* taskVarInit(), the create hook attempts to create a create hook, and that* may cause system failure.  To avoid this situation, taskVarInit() should* be called during system initialization from the root task, usrRoot(), in* usrConfig.c.** RETURNS: OK, or ERROR if the task switch/delete hooks could not be installed.*/STATUS taskVarInit (void)    {    static BOOL taskVarInstalled = FALSE;	/* TRUE = facility installed */    /* if task variables facility is not already installed, then install it     * by adding the switch and delete hooks     */    if (!taskVarInstalled)	{	if ((taskSwitchHookAdd ((FUNCPTR)taskVarSwitchHook) != OK) ||	    (taskDeleteHookAdd ((FUNCPTR)taskVarDeleteHook) != OK))	    {	    return (ERROR);	    }	taskVarInstalled = TRUE;	}    return (OK);    }/********************************************************************************* taskVarDeleteHook - delete task variables of exiting tasks** This routine is the task delete routine that deletes all task* variables of an exiting task.*/LOCAL void taskVarDeleteHook    (    WIND_TCB *pTcb    )    {    FAST TASK_VAR *pTaskVar;    FAST TASK_VAR *pTaskVarNext;    for (pTaskVar = pTcb->pTaskVar;	 pTaskVar != NULL;	 pTaskVar = pTaskVarNext)	{	pTaskVarNext = pTaskVar->next;	free ((char *)pTaskVar);	/* free storage of deleted cell */	}    }/********************************************************************************* taskVarSwitchHook - switch task variables of switching tasks** This routine is the task switch routine that implements the task variable* facility.  It swaps the current and saved values of all the task variables* of the out-going and in-coming tasks.*/LOCAL void taskVarSwitchHook    (    WIND_TCB *pOldTcb,    WIND_TCB *pNewTcb    )    {    FAST TASK_VAR *pTaskVar;    FAST int temp;    /* swap task variables of old task */    if (TASK_ID_VERIFY(pOldTcb) == OK)	/* suicide runs delete hook 1st */	{	for (pTaskVar = pOldTcb->pTaskVar;	     pTaskVar != NULL;	     pTaskVar = pTaskVar->next)	    {	    /* swap current and save value of task variable */	    temp = pTaskVar->value;	    pTaskVar->value = *(pTaskVar->address);	    *(pTaskVar->address) = temp;	    }	}    /* swap task variables of new task */    for (pTaskVar = pNewTcb->pTaskVar;	 pTaskVar != NULL;	 pTaskVar = pTaskVar->next)	{	/* swap current and save value of task variable */	temp = pTaskVar->value;	pTaskVar->value = *(pTaskVar->address);	*(pTaskVar->address) = temp;	}    }/********************************************************************************* taskVarAdd - add a task variable to a task** This routine adds a specified variable <pVar> (4-byte memory location) to a* specified task's context.  After calling this routine, the variable will* be private to the task.  The task can access and modify the variable, but* the modifications will not appear to other tasks, and other tasks'* modifications to that variable will not affect the value seen by the* task.  This is accomplished by saving and restoring the variable's initial* value each time a task switch occurs to or from the calling task.** This facility can be used when a routine is to be spawned repeatedly as* several independent tasks.  Although each task will have its own stack,* and thus separate stack variables, they will all share the same static and* global variables.  To make a variable \f2not\fP shareable, the routine can* call taskVarAdd() to make a separate copy of the variable for each task, but* all at the same physical address.** Note that task variables increase the task switch time to and from the* tasks that own them.  Therefore, it is desirable to limit the number of* task variables that a task uses.  One efficient way to use task variables * is to have a single task variable that is a pointer to a dynamically * allocated structure containing the task's private data.** EXAMPLE:* Assume that three identical tasks were spawned with a routine called* \f2operator()\f1.  All three use the structure OP_GLOBAL for all variables* that are specific to a particular incarnation of the task.  The following* code fragment shows how this is set up:** .CS* OP_GLOBAL *opGlobal;  /@ ptr to operator task's global variables @/** void operator*     (*     int opNum         /@ number of this operator task @/*     )*     {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91丨porny丨国产入口| 欧洲国内综合视频| 91福利精品视频| 欧美成人一区二区三区| 中文字幕在线观看一区| 美女一区二区久久| 白白色 亚洲乱淫| 欧美一卡二卡三卡四卡| 亚洲最快最全在线视频| 国产一区91精品张津瑜| 欧美日韩一区小说| 国产精品美女久久久久久 | 91官网在线免费观看| 欧美xxxxxxxx| 日韩中文字幕麻豆| 一本色道久久综合精品竹菊| 久久男人中文字幕资源站| 亚洲444eee在线观看| 91视频观看免费| 国产亚洲精品精华液| 色菇凉天天综合网| 精品91自产拍在线观看一区| 国产精品福利电影一区二区三区四区 | 久久久精品免费免费| 日本一不卡视频| 欧洲视频一区二区| 亚洲免费观看视频| 成人app软件下载大全免费| 久久综合九色综合欧美98| 免费看欧美女人艹b| 91精品国产综合久久久久久久| 一区二区三区加勒比av| 一本久久精品一区二区| 亚洲欧美另类综合偷拍| 91浏览器在线视频| 亚洲精品视频一区二区| 日本高清不卡在线观看| 一区二区三区国产豹纹内裤在线| 91色综合久久久久婷婷| 亚洲精品视频免费看| 在线免费观看成人短视频| 一区二区免费看| 欧美亚洲国产怡红院影院| 亚洲一线二线三线视频| 欧美日韩精品系列| 日韩av不卡一区二区| 日韩亚洲欧美中文三级| 国内精品伊人久久久久av影院 | 亚洲天堂精品在线观看| 91无套直看片红桃| 亚洲综合在线免费观看| 色婷婷综合久久久| 欧美a级理论片| 久久久久久亚洲综合| 国产成人精品网址| 国产精品传媒入口麻豆| 色丁香久综合在线久综合在线观看 | 日本视频一区二区| 久久综合国产精品| 成人综合在线观看| 亚洲图片欧美一区| 欧美成va人片在线观看| 成人动漫一区二区在线| 亚洲欧美区自拍先锋| 日韩午夜在线观看视频| 国产mv日韩mv欧美| 夜色激情一区二区| 精品国产一区二区三区久久久蜜月 | 成人一道本在线| 亚洲国产一二三| 26uuu另类欧美亚洲曰本| 91麻豆国产香蕉久久精品| 丝袜亚洲另类丝袜在线| 国产欧美一区二区三区鸳鸯浴 | 成人毛片在线观看| 日韩激情视频网站| 国产精品美女久久久久aⅴ| 欧美色电影在线| 国产成人免费在线观看不卡| 亚洲午夜一区二区| 亚洲精品一线二线三线无人区| 91啪亚洲精品| 国产制服丝袜一区| 天天综合日日夜夜精品| 国产精品天干天干在观线| 欧美一区二区三区免费大片| 国产馆精品极品| 奇米亚洲午夜久久精品| 一区二区三区在线免费视频| 久久综合国产精品| 欧美一区二区三区四区五区 | 国产成人自拍网| 首页欧美精品中文字幕| 亚洲欧美日韩国产中文在线| 精品久久一二三区| 欧美另类z0zxhd电影| 91亚洲国产成人精品一区二三| 国产精品一区二区在线看| 丝瓜av网站精品一区二区| 亚洲伦理在线精品| 国产精品久久久久久久裸模| 久久夜色精品一区| 日韩免费一区二区| 制服丝袜亚洲播放| 欧美日韩高清影院| 欧美少妇性性性| 色哟哟国产精品免费观看| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 亚洲欧美日韩系列| 最新久久zyz资源站| 中文字幕av不卡| 久久久99久久精品欧美| 久久综合狠狠综合| wwww国产精品欧美| 精品久久久久av影院| 日韩欧美高清一区| 在线综合+亚洲+欧美中文字幕| 欧美日韩在线播放三区| 精品视频在线视频| 欧美日韩综合不卡| 欧美肥妇毛茸茸| 欧美一级理论片| 2022国产精品视频| 国产日韩欧美一区二区三区综合| 久久嫩草精品久久久精品| 国产午夜亚洲精品羞羞网站| 国产精品午夜电影| 亚洲精品五月天| 亚洲电影一级片| 另类小说一区二区三区| 国产一区二区三区四| 成人在线综合网| 91美女在线看| 欧美日韩一区二区三区免费看| 91精品福利在线一区二区三区 | 日韩西西人体444www| 欧美成人bangbros| 欧美极品少妇xxxxⅹ高跟鞋 | 蜜臀久久久99精品久久久久久| 日本91福利区| 国产999精品久久久久久| 99精品视频一区二区三区| 91精品1区2区| 3atv在线一区二区三区| 久久久久免费观看| 亚洲品质自拍视频| 三级欧美韩日大片在线看| 久久99久久久久| 不卡av电影在线播放| 欧美色倩网站大全免费| 日韩女优毛片在线| 亚洲视频一二三区| 免费看精品久久片| av男人天堂一区| 日韩欧美一级在线播放| 专区另类欧美日韩| 美女脱光内衣内裤视频久久网站| 国产91精品一区二区麻豆网站| 在线观看亚洲a| 久久精品人人做| 亚洲国产精品一区二区久久 | 国产精品影视在线观看| 亚洲老司机在线| 亚洲午夜电影网| 成人小视频免费观看| 在线精品国精品国产尤物884a| 精品国产99国产精品| 一区二区久久久久| 国产精品18久久久| 日韩欧美一级特黄在线播放| 日韩毛片高清在线播放| 国产一区高清在线| 国产jizzjizz一区二区| 51精品久久久久久久蜜臀| 亚洲美女屁股眼交3| 美女国产一区二区| 一本一本大道香蕉久在线精品 | 国产成人综合自拍| 91精品免费观看| 亚洲福利视频一区二区| 99精品视频在线免费观看| 欧美国产1区2区| 粉嫩久久99精品久久久久久夜 | 久久综合av免费| 免费观看91视频大全| 欧美在线视频不卡| 亚洲三级视频在线观看| 国产91综合一区在线观看| 日韩欧美在线观看一区二区三区| ㊣最新国产の精品bt伙计久久| 丁香一区二区三区| 国产欧美日韩麻豆91| 粉嫩嫩av羞羞动漫久久久| 国产午夜亚洲精品羞羞网站| 国产乱人伦偷精品视频不卡| 久久亚洲免费视频| 国产在线精品国自产拍免费| xnxx国产精品| 久久99热99| 91精品欧美综合在线观看最新|