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

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

?? tasklib.c

?? vxworks 5.5 kernel code
?? C
?? 第 1 頁 / 共 5 頁
字號:
* taskSpawn - spawn a task** This routine creates and activates a new task with a specified priority* and options and returns a system-assigned ID.  See taskInit() and* taskActivate() for the building blocks of this routine.** A task may be assigned a name as a debugging aid.  This name will appear* in displays generated by various system information facilities such as* i().  The name may be of arbitrary length and content, but the current* VxWorks convention is to limit task names to ten characters and prefix* them with a "t".  If <name> is specified as NULL, an ASCII name will be* assigned to the task of the form "t<n>" where <n> is an integer which* increments as new tasks are spawned.** The only resource allocated to a spawned task is a stack of a specified* size <stackSize>, which is allocated from the system memory partition.* Stack size should be an even integer.  A task control block (TCB) is* carved from the stack, as well as any memory required by the task name.* The remaining memory is the task's stack and every byte is filled with the* value 0xEE for the checkStack() facility.  See the manual entry for* checkStack() for stack-size checking aids.** The entry address <entryPt> is the address of the "main" routine of the task.* The routine will be called once the C environment has been set up.* The specified routine will be called with the ten given arguments.* Should the specified main routine return, a call to exit() will* automatically be made.** Note that ten (and only ten) arguments must be passed for the* spawned function.** Bits in the options argument may be set to run with the following modes:* .iP "VX_FP_TASK  (0x0008)" 8* execute with floating-point coprocessor support.  A task which performs* floating point operations or calls any functions which either return* or take a floating point value as arguments must be created with this * option.  Some routines perform floating point operations internally.* The VxWorks documentation for these clearly state the need to use* the VX_FP_TASK option.* .iP "VX_PRIVATE_ENV  (0x0080)"* include private environment support (see envLib).* .iP "VX_NO_STACK_FILL  (0x0100)"* do not fill the stack for use by checkStack().* .iP "VX_UNBREAKABLE  (0x0002)"* do not allow breakpoint debugging.* .LP* See the definitions in taskLib.h.** RETURNS: The task ID, or ERROR if memory is insufficient or the task* cannot be created.** ERRNO: S_intLib_NOT_ISR_CALLABLE, S_objLib_OBJ_ID_ERROR,*        S_smObjLib_NOT_INITIALIZED, S_memLib_NOT_ENOUGH_MEMORY,*        S_memLib_BLOCK_ERROR, S_taskLib_ILLEGAL_PRIORITY** SEE ALSO: taskInit(), taskActivate(), sp(),* .pG "Basic OS"** VARARGS5*/int taskSpawn    (    char          *name,        /* name of new task (stored at pStackBase) */    int           priority,     /* priority of new task */    int           options,      /* task option word */    int           stackSize,    /* size (bytes) of stack needed plus name */    FUNCPTR       entryPt,      /* entry point of new task */    int           arg1,         /* 1st of 10 req'd task args to pass to func */    int           arg2,    int           arg3,    int           arg4,    int           arg5,    int           arg6,    int           arg7,    int           arg8,    int           arg9,    int           arg10     )    {    int tid = taskCreat (name, priority, options, stackSize, entryPt, arg1,                         arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10);    if (tid == (int)NULL)			/* create failed */	return (ERROR);    taskActivate (tid);				/* activate task */    return (tid);				/* return task ID */    }/********************************************************************************* taskCreat - allocate and initialize a task without activation** This routine allocates and initializes a new task with the given priority,* ID, and options.** argument <name>* A task may be given a name as a debugging aid.  This name will show up in* various system information facilities suchas i().  The name may be of* arbitrary length and content, but the current VxWorks convention is to limit* task names to ten characters and prefix them with a `t'.  If the task name* is specified as NULL, an ASCII name will be given to the task of the form* `t<n>' where <n> is number which increments as tasks are spawned.** argument <priority>* VxWorks schedules tasks on the basis of priority.  Tasks may have priorities* ranging from 0, the highest priority, to 255, the lowest priority.  VxWorks* system tasks execute with priorities in the range 0 to 50.  The priority* of a task in VxWorks in dynamic and one may change an existing task's priority* with taskPrioritySet().** Tasks in VxWorks always run in the most privileged mode of the CPU.  In* a shared address space, processor privilege offers no protection advantages* and actually hinders performance.** argument <options>* Bits in the options argument may be set to run with the following modes.* .CS*	VX_UNBREAKABLE		-  don't allow break point debugging*	VX_FP_TASK		-  execute with coprocessor support*	VX_DSP_TASK		-  execute with dsp support*	VX_ALTIVEC_TASK		-  execute with Altivec support*	VX_SPE_TASK		-  execute with SPE support*	VX_STDIO		-  execute with standard I/O support* .CE* See definitions in taskLib.h.** argument <stackSize>* The only resource allocated to a spawned task is a stack of the specified* size which is allocated from the memory pool.  Stack size should be even.* A task control block (TCB) is carved from the stack, as well as a task* debug structure WDB_INFO and any memory required by the task's name.* The remaining memory is the task's stack. Every byte of the stack is * filled with the value 0xEE for the checkStack() facility. See checkStack()* for stack size checking aids.** The task stack memory map is: ** For _STACK_GROWS_DOWN:** .CS*         - HIGH MEMORY -*     ------------------------*     |                      |*     |       WIND_TCB       |*     |                      |*     ------------------------ <--- pStackBase, pTcb*     |////// 16 bytes //////|	*     |                      | 		(16 bytes clobbered during objFree()*     |                      |		 in taskDestroy are not accounted for)*     |                      |*     |      TASK STACK      |*     |                      |*     |                      |*     |                      |*     ------------------------ <--- pTaskMem*         - LOW  MEMORY -* .CE** For _STACK_GROWS_UP:** .CS*          - HIGH MEMORY -*     ------------------------*     |                      |*     |                      |*     |                      |*     |      TASK STACK      |*     |                      |*     |                      |*     |                      |*     ------------------------ <--- pStackBase*     |                      |*     |       WIND_TCB       |*     |                      |*     ------------------------ <--- pTcb*     |////// 16 bytes //////|	 (clobbered during objFree of taskDestroy)*     ------------------------ <--- pTaskMem*          - LOW  MEMORY -* .CE** argument <entryPt>* The entry address is the address of the `main' routine of the task.  The* routine will be called once the C environment has been set up by* vxTaskEntry().  Should the specified main routine return, vxTaskEntry() will* automatically call exit().  The specified routine will be called with the* ten given arguments.** See taskSpawn() for creating tasks with activation.** See taskInit() for initializing tasks with pre-allocated stacks.** RETURNS: Task ID, or NULL if out of memory or unable to create task.** SEE ALSO: "Basic OS", taskInit(), taskActivate(), taskSpawn()** VARARGS5* NOMANUAL*/int taskCreat    (    char          *name,        /* name of new task (stored at pStackBase) */    int           priority,     /* priority of new task */    int           options,      /* task option word */    int           stackSize,    /* size (bytes) of stack needed */    FUNCPTR       entryPt,      /* entry point of new task */    int           arg1,         /* task argument one */    int           arg2,         /* task argument two */    int           arg3,         /* task argument three */    int           arg4,         /* task argument four */    int           arg5,         /* task argument five */    int           arg6,         /* task argument six */    int           arg7,         /* task argument seven */    int           arg8,         /* task argument eight */    int           arg9,         /* task argument nine */    int           arg10         /* task argument ten */    )    {    char	newName[20];	/* place to keep name for nameless tasks */    char *	pTaskMem;	/* pointer to task memory */    char *	pStackBase;	/* bottom of stack (higher memory address) */    WIND_TCB *	pTcb;		/* tcb pointer */    char *	pBufStart;	/* points to temp name buffer start */    char *	pBufEnd;	/* points to temp name buffer end */    char	temp;		/* working character */    int		value;		/* working value to convert to ascii */    int		nPreBytes;	/* nameless prefix string length */    int		nBytes	  = 0;	/* working nameless name string length */    static char	digits [] = "0123456789";    if (name == NULL)				/* name nameless w/o sprintf */	{	strcpy (newName, namelessPrefix);	/* copy in prefix */	nBytes    = strlen (newName);		/* calculate prefix length */	nPreBytes = nBytes;			/* remember prefix strlen() */	value	  = ++ nameForNameless;		/* bump the nameless count */	do					/* crank out digits backwards */	    {	    newName [nBytes++] = digits [value % 10];	    value /= 10;			/* next digit */	    }	while (value != 0);			/* until no more digits */	pBufStart = newName + nPreBytes;	/* start reverse after prefix */    	pBufEnd	  = newName + nBytes - 1;	/* end reverse at EOS */	while (pBufStart < pBufEnd)		/* reverse the digits */	    {	    temp	= *pBufStart;	    *pBufStart	= *pBufEnd;	    *pBufEnd	= temp;	    pBufEnd--;	    pBufStart++;	    }	newName[nBytes] = EOS;			/* EOS terminate string */	name		= newName;		/* taskInit copies to task */	}#if	CPU==SIMSPARCSUNOS || CPU==SIMHPPA || CPU==SIMSPARCSOLARIS    if (sysFlags & SYSFLG_DEBUG)	stackSize *= 2;#endif	/* CPU==SIMSPARCSUNOS || CPU==SIMHPPA || CPU==SIMSPARCSOLARIS */#if     (CPU==SIMNT || CPU==SIMHPPA || CPU==SIMSPARCSOLARIS)    /*     * SIMHPPA and SIMSPARCSOLARIS take interrupts on the current      * task stack.     * Moreover SIMNT and SIMSPARCSOLARIS use the current task stack for      * WINDOWS/UNIX system calls.     * Bump all task stack sizes here to compensate, this way     * when new vxWorks system tasks are added we won't need     * to constantly readjust their default stack sizes.     * Set this value to 12k which seems enough to prevent stackoverflow.     */    stackSize += 0x3000;#endif  /* CPU == SIMNT || CPU==SIMHPPA || CPU==SIMSPARCSOLARIS */    /* round stacksize up */    stackSize	= STACK_ROUND_UP (stackSize);    /*      * Allocate the WIND_TCB object, plus additional bytes for     * the task stack from the task memory partition.     * The 16 bytes of clobbered data is accounted for in the WIND_TCB object.     */    pTaskMem = (char *) objAllocExtra    			    (			    taskClassId,			    (unsigned) (stackSize),			    (void **) NULL			    );    if (pTaskMem == NULL)	return ((int)NULL);			/* allocation failed */#if	(_STACK_DIR == _STACK_GROWS_DOWN)    /*     * A portion of the very top of the stack is clobbered with a FREE_BLOCK     * in the objFree() associated with taskDestroy().  There is no adverse     * consequence of this, and is thus not accounted for.     */    pStackBase	= pTaskMem + stackSize;		/* grows down from WIND_TCB */    pTcb	= (WIND_TCB *) pStackBase;#else	/* _STACK_GROWS_UP */    /*     * To protect a portion of the WIND_TCB that is clobbered with a FREE_BLOCK     * in the objFree() associated with taskDestroy(), we goose the base of     * tcb by 16 bytes.     */    pTcb	= (WIND_TCB *) (pTaskMem + 16);    pStackBase	= STACK_ROUND_UP (pTaskMem + 16 + sizeof(WIND_TCB));#endif    options    |= VX_DEALLOC_STACK;		/* set dealloc option bit */    if (taskInit (pTcb, name, priority, options, pStackBase, stackSize, entryPt,	          arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10)	!= OK)	{	objFree (taskClassId, pTaskMem);	return ((int)NULL);	}    return ((int) pTcb);			/* return task ID */    }/********************************************************************************* taskInit - initialize a task with a stack at a specified address** This routine initializes user-specified regions of memory for a task stack* and control block instead of allocating them from memory as taskSpawn()* does.  This routine will utilize the specified pointers to the WIND_TCB* and stack as the components of the task.  This allows, for example, the* initialization of a static WIND_TCB variable.  It also allows for special* stack positioning as a debugging aid.** As in taskSpawn(), a task may be given a name.  While taskSpawn()* automatically names unnamed tasks, taskInit() permits the existence of* tasks without names.  The task ID required by other task routines* is simply the address <pTcb>, cast to an integer.** Unlike taskSpawn(), taskInit() allows one to control the activation of the* VX_DEALLOC_STACK bit in <options>; taskSpawn() always sets this bit.  Setting* this bit causes the stack to be automatically deallocated when a taskDelete()* is done, or when a return command is issued from the entry function.  If a* pre-allocated stack is used, the VX_DEALLOC_STACK bit must not be set.** Note that the task stack may grow up or down from pStackBase, depending on* the target architecture.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产精品劲爆| 美女视频黄a大片欧美| 日韩在线a电影| 国产精品白丝jk黑袜喷水| 91理论电影在线观看| 91精品国产福利在线观看| 中文字幕av一区二区三区| 天堂va蜜桃一区二区三区漫画版| 国产精品123| 日韩亚洲欧美高清| 一区二区三区日韩精品视频| 国产不卡免费视频| 精品人在线二区三区| 亚洲成av人片在线| 91欧美一区二区| 国产精品―色哟哟| 国产精品99久| 日韩欧美一二三四区| 亚洲国产日日夜夜| 色偷偷久久人人79超碰人人澡| 国产欧美一区二区精品性色 | 国产一本一道久久香蕉| 欧美老女人第四色| 亚洲精品日产精品乱码不卡| 成人国产电影网| 国产欧美一区二区三区在线看蜜臀 | 洋洋成人永久网站入口| 99久久免费视频.com| 国产欧美日韩激情| 国产成人精品亚洲日本在线桃色| 精品三级av在线| 国产综合色产在线精品| 日韩精品中文字幕在线一区| 久久精品99国产精品| 欧美一区二区三区四区视频| 午夜精品福利一区二区三区蜜桃| 欧美喷潮久久久xxxxx| 五月婷婷激情综合| 日韩一区二区在线看| 久久国产日韩欧美精品| 精品国产免费人成在线观看| 麻豆成人久久精品二区三区红| 欧美一区二区在线播放| 三级不卡在线观看| 日韩精品一区二区三区中文不卡 | 欧美日韩一区二区三区四区| 洋洋成人永久网站入口| 91精品视频网| 寂寞少妇一区二区三区| 亚洲国产精品传媒在线观看| 99精品视频在线免费观看| 亚洲自拍欧美精品| 欧美大白屁股肥臀xxxxxx| 国产一区二区按摩在线观看| 国产精品国产三级国产有无不卡 | 欧美在线观看视频一区二区| 亚洲成人一区在线| 777午夜精品免费视频| 日韩综合在线视频| 欧美一区二区成人| 国内精品不卡在线| 欧美日本在线播放| 蜜桃在线一区二区三区| 久久久亚洲精品石原莉奈| 粉嫩av一区二区三区| 亚洲国产成人一区二区三区| 99re成人精品视频| 午夜国产不卡在线观看视频| 日韩欧美不卡一区| 国产99久久精品| 亚洲图片你懂的| 91激情五月电影| 国产麻豆精品一区二区| 亚洲欧美在线高清| 欧美日本视频在线| 国产在线播放一区三区四| 国产清纯美女被跳蛋高潮一区二区久久w| 国产电影一区二区三区| 国产精品久久久久7777按摩| 欧美色倩网站大全免费| 亚洲国产va精品久久久不卡综合| 2023国产一二三区日本精品2022| 免费欧美日韩国产三级电影| 国产午夜亚洲精品理论片色戒| 一本久道久久综合中文字幕 | 91精品国产色综合久久不卡电影| 国内精品久久久久影院一蜜桃| 亚洲人成人一区二区在线观看| 欧美日韩另类一区| 国产一区二区免费在线| 亚洲精品中文在线| 欧美日韩激情一区| 97久久精品人人澡人人爽| 免费成人美女在线观看.| 中文字幕免费一区| 欧美二区在线观看| av在线免费不卡| 蜜桃视频在线一区| 一区二区三区免费| 久久久综合九色合综国产精品| 欧美久久久久久蜜桃| 不卡影院免费观看| 久久超级碰视频| 亚洲欧美日韩国产另类专区| 精品国产99国产精品| 欧美综合久久久| 国产91精品免费| 久久99久久久久| 亚洲综合激情另类小说区| 亚洲色图视频网| 国产日韩欧美a| 日韩免费性生活视频播放| 欧美中文字幕亚洲一区二区va在线| 国产电影一区二区三区| 久久99热这里只有精品| 亚洲午夜久久久久久久久久久| 久久久久国产精品免费免费搜索| 69久久夜色精品国产69蝌蚪网| 色婷婷久久久综合中文字幕| 福利视频网站一区二区三区| 久久91精品国产91久久小草| 五月天视频一区| 亚洲va中文字幕| 亚洲一区国产视频| 日韩美女视频一区二区| 欧美激情一区二区三区全黄| 日韩欧美精品在线视频| 欧美日韩dvd在线观看| 欧美一区二区三区精品| 欧美美女直播网站| 精品视频一区 二区 三区| 在线观看亚洲精品| 欧美视频第二页| 欧美少妇一区二区| 欧美精品在线视频| 色欧美日韩亚洲| 欧美一区二区三区影视| 日韩午夜精品视频| 日韩一级成人av| 欧美成人一区二区三区片免费| 欧美xxxxx牲另类人与| 欧美一区二区黄色| 久久亚洲综合av| 日韩一级大片在线| 中文字幕制服丝袜一区二区三区| 国产精品网站一区| 亚洲日本成人在线观看| 一区二区三区资源| 亚洲成人tv网| 精品一区二区三区av| 国产毛片精品视频| 日本乱人伦aⅴ精品| 欧美日韩不卡视频| 久久综合久久久久88| 国产精品免费视频一区| 日韩电影网1区2区| 国产.精品.日韩.另类.中文.在线.播放 | 日韩专区在线视频| 捆绑调教美女网站视频一区| 成人涩涩免费视频| 欧美日韩免费视频| 精品国产91乱码一区二区三区 | 岛国一区二区在线观看| 色老综合老女人久久久| 在线电影一区二区三区| 精品国产91亚洲一区二区三区婷婷| 久久亚洲捆绑美女| 一个色在线综合| 九九热在线视频观看这里只有精品| 国产综合色视频| 在线看日韩精品电影| 日韩午夜在线播放| 亚洲一区二区av电影| 国产盗摄一区二区三区| 欧美午夜精品理论片a级按摩| 日韩欧美一区二区久久婷婷| 国产精品国产三级国产普通话99| 日本色综合中文字幕| 99久久久无码国产精品| 日韩欧美激情四射| 亚洲综合色区另类av| 床上的激情91.| 欧美成人bangbros| 丝袜国产日韩另类美女| 成人免费看片app下载| 日韩欧美久久一区| 亚洲超碰97人人做人人爱| 成人综合婷婷国产精品久久| 色网综合在线观看| 亚洲另类色综合网站| 岛国一区二区三区| 欧美精品一区二区三区很污很色的 | 日韩精品一级二级| 99国产麻豆精品| 中文字幕在线播放不卡一区| 久久国产人妖系列| 91精品国产综合久久精品图片 | 精品视频在线看| 综合亚洲深深色噜噜狠狠网站| 国产美女视频91|