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

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

?? tasklib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
*/STATUS taskInit    (    FAST WIND_TCB *pTcb,        /* address of new task's TCB */    char          *name,        /* name of new task (stored at pStackBase) */    int           priority,     /* priority of new task */    int           options,      /* task option word */    char          *pStackBase,  /* base of new task's stack */    int           stackSize,    /* size (bytes) of stack needed */    FUNCPTR       entryPt,      /* entry point of new task */    int           arg1,         /* first of ten task args to pass to func */    int           arg2,    int           arg3,    int           arg4,    int           arg5,    int           arg6,    int           arg7,    int           arg8,    int           arg9,    int           arg10     )    {    FAST int  	ix;			/* index for create hooks */    int	      	pArgs [MAX_TASK_ARGS];	/* 10 arguments to new task */    unsigned	taskNameLen;		/* string length of task name */    char       *taskName = NULL;	/* assume nameless */    if (INT_RESTRICT () != OK)			/* restrict ISR from calling */	return (ERROR);    if (taskPriRangeCheck)	{	if ((priority & 0xffffff00) != 0)	/* ! (0 <= x <= 255) */	    {	    errno = S_taskLib_ILLEGAL_PRIORITY;	    return (ERROR);	    }	}    if ((!taskLibInstalled) && (taskLibInit () != OK))	return (ERROR);				/* package init problem */    /* get arguments into indigenous variables */    pArgs[0] = arg1; pArgs[1] = arg2; pArgs[2] = arg3; pArgs[3] = arg4;    pArgs[4] = arg5; pArgs[5] = arg6; pArgs[6] = arg7;    pArgs[7] = arg8; pArgs[8] = arg9;    pArgs[9] = arg10;    /* initialize task control block (in order) */    pTcb->options       = options;		/* options */    pTcb->status	= WIND_SUSPEND;		/* initially suspended */    pTcb->priority	= priority;		/* set priority */    pTcb->priNormal	= priority;		/* set standard priority */    pTcb->priMutexCnt	= 0;			/* no mutex owned */    pTcb->pPriMutex	= NULL;			/* not blocked on pri mutex */    pTcb->lockCnt	= 0;	 		/* task w/o preemption lock */    pTcb->tslice	= 0;			/* no round robin */    pTcb->swapInMask	= 0;			/* no swap-in hooks */    pTcb->swapOutMask   = 0;			/* no swap-out hooks */    pTcb->pPendQ  	= NULL;			/* initialize ptr to pend q */    pTcb->safeCnt	= 0;	 		/* initialize safe count */    /* initialize safety q head */    qInit (&pTcb->safetyQHead, Q_PRI_LIST, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);#if ((CPU_FAMILY == ARM) && ARM_THUMB)    pTcb->entry         = (FUNCPTR)((UINT32)entryPt & ~1); /* entry address */#else    pTcb->entry         = entryPt;		/* entry address */#endif    pTcb->pStackBase	= pStackBase;		/* initialize stack base */    pTcb->pStackLimit   = pStackBase + stackSize*_STACK_DIR;    pTcb->pStackEnd	= pTcb->pStackLimit;    if (!(options & VX_NO_STACK_FILL))		/* fill w/ 0xee for checkStack*/#if	(_STACK_DIR == _STACK_GROWS_DOWN)	bfill (pTcb->pStackLimit, stackSize, 0xee);#else	/* (_STACK_DIR == _STACK_GROWS_UP) */	bfill (pTcb->pStackBase, stackSize, 0xee);#endif	/* (_STACK_DIR == _STACK_GROWS_UP) */    taskRegsInit (pTcb, pStackBase);		/* initialize register set */    pTcb->errorStatus   = OK;			/* errorStatus */    pTcb->exitCode	= OK;			/* field for exit () */    pTcb->pSignalInfo   = NULL;			/* ptr to signal context */    pTcb->pSelectContext= NULL;			/* context not allocated yet */    pTcb->ppEnviron	= NULL;			/* global environment vars */    pTcb->taskTicks     = 0;			/* profiling for spyLib */    pTcb->taskIncTicks  = 0;			/* profiling for spyLib */#if CPU_FAMILY!=I960    pTcb->excInfo.valid = 0;			/* exception info is invalid */#else /* CPU_FAMILY == I960 */    pTcb->excInfo.eiType = 0;#endif	/* CPU_FAMILY!=I960 */    pTcb->pTaskVar      = NULL;			/* list of task variables */    pTcb->pRPCModList	= NULL;			/* rpc module statics context */    pTcb->pFpContext    = NULL;			/* floating point context */    pTcb->pDspContext   = NULL;			/* dsp context */						    for (ix = 0; ix < 3; ++ix)	{	pTcb->taskStd[ix]    = ix;		/* stdin/stdout/stderr fds */	pTcb->taskStdFp[ix]  = NULL;		/* stdin/stdout/stderr fps */	}    pTcb->pSmObjTcb	= NULL;			/* no shared TCB for now */    pTcb->windxLock	= (int)NULL;    pTcb->pComLocal	= NULL;    pTcb->pExcRegSet	= NULL;    bzero ((char*)&(pTcb->events), sizeof(EVENTS));/* clear events structure */    pTcb->reserved1	= (int)NULL;    pTcb->reserved2	= (int)NULL;    pTcb->spare1	= (int)NULL;    pTcb->spare2	= (int)NULL;    pTcb->spare3	= (int)NULL;    pTcb->spare4	= (int)NULL;    pTcb->pPthread	= NULL;       pTcb->wdbInfo.wdbState	= 0;    pTcb->wdbInfo.bpAddr	= 0;    pTcb->wdbInfo.wdbExitHook	= NULL;    taskArgsSet (pTcb, pStackBase, pArgs);	/* initialize task arguments */#ifdef WV_INSTRUMENTATION    /* windview instrumentation */    /* windview - level 1 event logging     * The objCore has not been initialised yet so this must be done     * by hand.     */    EVT_OBJ_TASKSPAWN (EVENT_TASKSPAWN, (int) pTcb, priority,                    	stackSize, (int) entryPt, options);    /* windview - The parser must be able to link a name with a task id. */    EVT_CTX_TASKINFO (EVENT_TASKNAME, WIND_SUSPEND,               	       pTcb->priority, pTcb->lockCnt, (int) pTcb, name);#endif    kernelState = TRUE;				/* KERNEL ENTER */    windSpawn (pTcb);				/* spawn the task */#ifdef WV_INSTRUMENTATION    /* windview - connect the instrumented class for level 1 event logging */    if (wvObjIsEnabled)        objCoreInit (&pTcb->objCore, taskInstClassId);    else#endif	objCoreInit (&pTcb->objCore, taskClassId);	/* validate task ID */    windExit ();				/* KERNEL EXIT */    if (name != NULL)				/* copy name if not nameless */	{	taskNameLen = (unsigned) (strlen (name) + 1);	taskName    = (char *) taskStackAllot ((int) pTcb, taskNameLen);	strcpy (taskName, name);		/* copy the name onto stack */	}    pTcb->name = taskName;			/* name of this task */    for (ix = 0; ix < VX_MAX_TASK_CREATE_RTNS; ++ix)	{	if (taskCreateTable[ix] != NULL)	    (*taskCreateTable[ix]) (pTcb);	}    return (OK);				/* return task ID */    }/********************************************************************************* taskActivate - activate a task that has been initialized** This routine activates tasks created by taskInit().  Without activation, a* task is ineligible for CPU allocation by the scheduler.* * The <tid> (task ID) argument is simply the address of the WIND_TCB* for the task (the taskInit() <pTcb> argument), cast to an integer:* .CS* tid = (int) pTcb;* .CE** The taskSpawn() routine is built from taskActivate() and taskInit().* Tasks created by taskSpawn() do not require explicit task activation.** RETURNS: OK, or ERROR if the task cannot be activated.** SEE ALSO: taskInit()*/STATUS taskActivate    (    int tid                     /* task ID of task to activate */    )    {    return (taskResume (tid));			/* taskActivate == taskResume */    }/********************************************************************************* exit - exit a task  (ANSI)** This routine is called by a task to cease to exist as a task.  It is* called implicitly when the "main" routine of a spawned task is exited.* The <code> parameter will be stored in the WIND_TCB for* possible use by the delete hooks, or post-mortem debugging.** ERRNO:  N/A** SEE ALSO: taskDelete(),* .I "American National Standard for Information Systems -"* .I "Programming Language - C, ANSI X3.159-1989: Input/Output (stdlib.h),"* .pG "Basic OS"*/void exit    (    int code            /* code stored in TCB for delete hooks */    )    {    taskIdCurrent->exitCode = code;		/* store the exit code */    taskLock ();				/* LOCK PREEMPTION */    taskIdCurrent->options |= VX_UNBREAKABLE;	/* mark as unbreakable */    if (taskBpHook != NULL)			/* call the debugger hook */	(* taskBpHook) (taskIdCurrent);		/* to remove all breakpoints */    taskUnlock ();				/* UNLOCK PREEMPTION */    taskDestroy (0, TRUE, WAIT_FOREVER, FALSE);	/* self destruct */    }/********************************************************************************* taskDelete - delete a task** This routine causes a specified task to cease to exist and deallocates the* stack and WIND_TCB memory resources.  Upon deletion, all routines specified* by taskDeleteHookAdd() will be called in the context of the deleting task.* This routine is the companion routine to taskSpawn().** RETURNS: OK, or ERROR if the task cannot be deleted.** ERRNO: S_intLib_NOT_ISR_CALLABLE, S_objLib_OBJ_DELETED*        S_objLib_OBJ_UNAVAILABLE, S_objLib_OBJ_ID_ERROR** SEE ALSO: excLib, taskDeleteHookAdd(), taskSpawn(),* .pG "Basic OS"*/STATUS taskDelete    (    int tid                     /* task ID of task to delete */    )    {    return (taskDestroy (tid, TRUE, WAIT_FOREVER, FALSE));    }/********************************************************************************* taskDeleteForce - delete a task without restriction** This routine deletes a task even if the task is protected from deletion.  * It is similar to taskDelete().  Upon deletion, all routines* specified by taskDeleteHookAdd() will be called in the context of the* deleting task.** CAVEATS* This routine is intended as a debugging aid, and is generally inappropriate* for applications.  Disregarding a task's deletion protection could leave the* the system in an unstable state or lead to system deadlock.** The system does not protect against simultaneous taskDeleteForce() calls.* Such a situation could leave the system in an unstable state.** RETURNS: OK, or ERROR if the task cannot be deleted.** ERRNO: S_intLib_NOT_ISR_CALLABLE, S_objLib_OBJ_DELETED,*        S_objLib_OBJ_UNAVAILABLE, S_objLib_OBJ_ID_ERROR** SEE ALSO: taskDeleteHookAdd(), taskDelete()*/STATUS taskDeleteForce    (    int tid                     /* task ID of task to delete */    )    {    return (taskDestroy (tid, TRUE, WAIT_FOREVER, TRUE));    }/********************************************************************************* taskTerminate - terminate a task** This routine causes a task to cease to exist but does not deallocate the* stack or WIND_TCB memory.  During termination, all routines specified by* taskDeleteHookAdd() will be called in the context of the deleting task.* This routine serves as the companion routine to taskInit().  To delete a* task created by taskSpawn(), see taskDelete().** If a task attempts to terminate itself, the termination and the delete hooks* are performed in the context of the exception task.** RETURNS: OK, or ERROR if task cannot be terminated.** ERRNO: S_intLib_NOT_ISR_CALLABLE, S_objLib_OBJ_DELETED,*        S_objLib_OBJ_UNAVAILABLE, S_objLib_OBJ_ID_ERROR** SEE ALSO: excLib, taskDeleteHookAdd(), taskDelete(),* .pG "Basic OS"** NOMANUAL*/STATUS taskTerminate    (    int tid                     /* task ID of task to delete */    )    {    return (taskDestroy (tid, FALSE, WAIT_FOREVER, FALSE));    }/********************************************************************************* taskDestroy - destroy a task** This routine causes the specified task to cease to exist and, if successful,* optionally frees the memory associated with the task's stack and* WIND_TCB.  This call forms the foundation to the routines taskDelete() and* taskTerminate().  Upon destruction, all routines specified by* taskDeleteHookAdd() will be called in the context of the destroying task.** If a task attempts to destroy itself, the destruction and the delete hooks* are performed in the context of the exception task.** RETURNS: OK, or ERROR if task cannot be destroyed.** ERRNO: S_intLib_NOT_ISR_CALLABLE, S_objLib_OBJ_DELETED,*        S_objLib_OBJ_UNAVAILABLE, S_objLib_OBJ_ID_ERROR** SEE ALSO: excLib, taskDeleteHookAdd(), taskTerminate(), taskDelete()** NOMANUAL*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产第一综合99久久| 国产亚洲精品精华液| 91色在线porny| 成人综合激情网| 国产成人精品影院| 黄页视频在线91| 国产专区综合网| 国产原创一区二区| 国产成+人+日韩+欧美+亚洲 | 日本久久一区二区| 91国偷自产一区二区三区成为亚洲经典 | 99riav久久精品riav| 一本到不卡免费一区二区| 91国产精品成人| 欧美日韩一级视频| 欧美一区二区三区在线观看| 日韩三级视频在线看| 久久九九久久九九| 欧美激情一区二区| 亚洲精品少妇30p| 亚洲不卡av一区二区三区| 日韩不卡手机在线v区| 久久精品国产网站| 成人毛片视频在线观看| 91丨porny丨首页| 欧美日韩一区二区电影| 美女任你摸久久| 亚洲日本青草视频在线怡红院| 亚洲一区免费视频| 国产a精品视频| 黄色日韩网站视频| 九色综合狠狠综合久久| 激情综合亚洲精品| 国产精品一区专区| 丁香啪啪综合成人亚洲小说| 99久久精品一区二区| 一本一道久久a久久精品| 亚洲激情网站免费观看| 51精品国自产在线| 久久免费的精品国产v∧| 中文字幕一区在线观看| 日韩国产在线一| 国产91在线观看丝袜| 欧美网站大全在线观看| 久久综合色天天久久综合图片| 亚洲天堂精品视频| 蜜桃视频免费观看一区| 91视视频在线观看入口直接观看www | 亚洲成人av资源| 国内一区二区在线| 色婷婷国产精品久久包臀| 日韩一级完整毛片| 亚洲欧洲一区二区三区| 视频一区二区中文字幕| 99在线精品视频| 欧美xxxxx牲另类人与| 亚洲黄一区二区三区| 国产一区二区在线观看免费| 欧美影片第一页| 国产欧美精品区一区二区三区 | 天天免费综合色| 不卡大黄网站免费看| 久久久亚洲国产美女国产盗摄| 国产欧美日韩三级| 国产91丝袜在线播放九色| 欧美三级视频在线播放| 国产精品久久久一区麻豆最新章节| 午夜欧美大尺度福利影院在线看 | 久久婷婷国产综合精品青草| 夜夜精品视频一区二区| 韩国一区二区视频| 日韩精品专区在线| 欧美mv日韩mv| 国产精品卡一卡二| 看片网站欧美日韩| 欧美日韩亚洲综合| 成人欧美一区二区三区白人| 久久精品国产亚洲5555| 欧美精选午夜久久久乱码6080| 亚洲欧美日韩中文播放| 国产激情精品久久久第一区二区| 日韩一区和二区| 午夜不卡av在线| 色94色欧美sute亚洲线路一ni| 国产日韩av一区| 老司机精品视频在线| 3751色影院一区二区三区| 最新久久zyz资源站| 国产精品综合二区| 精品裸体舞一区二区三区| 美女视频一区在线观看| 欧美日韩国产高清一区| 一区二区三区在线观看欧美| 91丨九色丨蝌蚪富婆spa| 国产精品成人免费| 成人aa视频在线观看| 国产亚洲成aⅴ人片在线观看 | 91一区二区三区在线播放| 久久精品人人做人人爽97| 激情文学综合网| xnxx国产精品| 国产综合色视频| 精品国产电影一区二区| 另类小说欧美激情| 欧美精品一区二区三区蜜桃| 久久99久久久久| 亚洲精品在线免费播放| 精品一区二区三区免费毛片爱 | 亚洲男人天堂av| 色综合天天在线| ●精品国产综合乱码久久久久| 99这里只有久久精品视频| 综合婷婷亚洲小说| 色哟哟在线观看一区二区三区| 亚洲美女精品一区| 欧洲精品在线观看| 三级成人在线视频| 日韩情涩欧美日韩视频| 国产一区二区精品久久91| 国产亚洲短视频| 91美女在线看| 婷婷开心久久网| 欧美不卡一二三| 国产高清无密码一区二区三区| 日本一区二区高清| 色综合天天综合网天天狠天天| 亚洲自拍偷拍综合| 日韩一区二区电影在线| 国产在线精品免费av| 国产一区二区三区最好精华液| 日韩一二在线观看| 国产精品99久久久久久有的能看| 国产精品美女一区二区| 色哟哟亚洲精品| 奇米影视7777精品一区二区| www久久精品| 色欧美片视频在线观看在线视频| 日日骚欧美日韩| 久久精品一区四区| 日本韩国一区二区三区视频| 日韩精品一二三| 国产视频一区在线播放| 日本精品视频一区二区| 久久精品国产精品亚洲综合| 国产精品盗摄一区二区三区| 欧美精品第1页| 国产电影一区二区三区| 亚洲国产va精品久久久不卡综合| 精品国产乱码久久久久久久| 91蜜桃网址入口| 精品一区二区免费在线观看| 日韩码欧中文字| 日韩精品一区二区三区在线观看 | 精品对白一区国产伦| 一本一道波多野结衣一区二区| 美女mm1313爽爽久久久蜜臀| 最新日韩av在线| wwwwxxxxx欧美| 欧美视频精品在线| 国产成人精品1024| 五月综合激情婷婷六月色窝| 中文字幕在线观看一区| 欧美成人免费网站| 一本久久精品一区二区| 国产一区二区三区四区五区入口| 一二三四社区欧美黄| www国产精品av| 欧美高清视频www夜色资源网| 成人免费三级在线| 美国十次了思思久久精品导航| 亚洲女同一区二区| 中文一区二区完整视频在线观看 | 亚洲欧洲韩国日本视频| 日韩写真欧美这视频| 欧美亚洲综合久久| 成人小视频免费观看| 蜜臀av性久久久久蜜臀aⅴ| 亚洲精品一二三| 国产欧美一区二区在线观看| 日韩欧美一区电影| 欧美精品高清视频| 欧美综合在线视频| www.一区二区| 国产精品自拍一区| 老司机精品视频一区二区三区| 亚洲国产成人91porn| 又紧又大又爽精品一区二区| 欧美国产日韩亚洲一区| 26uuu精品一区二区三区四区在线| 欧美日韩精品三区| 欧美色网站导航| 色视频欧美一区二区三区| 99久久精品国产一区二区三区| 国产aⅴ综合色| 国产毛片精品视频| 国产自产高清不卡| 国产真实乱偷精品视频免| 久久国产免费看| 久久精品噜噜噜成人av农村| 国产真实乱偷精品视频免|