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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? objlib.c

?? vxworks的完整的源代碼
?? C
字號:
/* objLib.c - generic object management library *//* Copyright 1984-1992 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01n,24jun96,sbs  made windview instrumentation conditionally compiled01m,10dec93,smb  added instrumentation details CLASS_RESOLVE01l,23aug92,jcf  commented out unused routines to conserve space.01k,18jul92,smb  Changed errno.h to errnoLib.h.01j,04jul92,jcf  private header files; removed printf calls01i,26may92,rrr  the tree shuffle01h,04dec91,rrr  removed VARARG_OK, no longer needed with ansi c.01g,04oct91,rrr  passed through the ansification filter                  -changed functions to ansi style		  -changed includes to have absolute path from h/		  -fixed #else and #endif		  -changed VOID to void		  -changed copyright notice01f,18may91,gae  fixed varargs for 960 with conditional VARARG_OK,		 namely: objCreate() & objInit().01e,29sep90,jcf  documentation.01d,15jul90,dnw  changed objAlloc() to return (void *) instead of (char *)		 deleted 'extra' arg from objAlloc() and added objAllocExtra()01c,03jul90,jcf  fixed NULL pointer reference in objTerminate.01b,26jun90,jcf  added objAlloc()/objFree ().		 added object alloc count/free count.01a,09dec89,jcf  written.*//*DESCRIPTIONThis library contains class object management routines.  Classes of objectscontrol object methods suchas creation, initialization, deletion, andtermination.Many objects in VxWorks are managed with class organization.  These includetasks, semaphores, watchdogs, memory partitions, symbol tables, hash tables,message queues, and, recursively, classes themselves.INCLUDE FILE: objLib.hNOMANUAL*/#include "vxWorks.h"#include "objLib.h"#include "classLib.h"#include "taskLib.h"#include "memLib.h"#include "intLib.h"#include "errnoLib.h"#include "stdarg.h"#include "stdio.h"#define	OBJ_MAX_ARGS	16	/* max number of variable arguments */#define CLASS_OBJ_TO_TID(pObj)	((OBJ_ID)((int)pObj + taskClassId->coreOffset))#ifdef WV_INSTRUMENTATION/* This macro was modified to reflect changes for windview */#define CLASS_RESOLVE(pObj) \	(((CLASS_OBJ_TO_TID(pObj)->pObjClass == taskClassId) ||  \	 (CLASS_OBJ_TO_TID(pObj)->pObjClass ==                  \		 (CLASS_ID)(((struct obj_class *)(taskClassId))->initRtn))) ? \         (taskClassId) : (((OBJ_ID)pObj)->pObjClass))#else#define CLASS_RESOLVE(pObj) \	((CLASS_OBJ_TO_TID(pObj)->pObjClass == taskClassId) ? \         (taskClassId) : (((OBJ_ID)pObj)->pObjClass))#endif#if FALSE       /* may utilize someday *//********************************************************************************* objCreate - allocate and initialize an object** This routine creates an object of the specified class via the classes create* method.** RETURNS: object id, or NULL if object couldn't be created.** VARARGS1*/OBJ_ID objCreate    (    CLASS_ID classId,   /* object class of object to create */    ...              /* optional arguments to create routine */    )    {    va_list pArg;	/* traverses argument list */    int ix;		/* handy index */    int a[OBJ_MAX_ARGS];/* indigenous variables */    if (OBJ_VERIFY (classId, classClassId) != OK)	return (NULL);    va_start (pArg, classId);    for (ix = 0; ix < OBJ_MAX_ARGS; ++ix)	a[ix] = va_arg (pArg, int);	/* varargs into indigenous variables */    va_end (pArg);    return ((OBJ_ID)((* classId->createRtn) (a[0], a[1], a[2], a[3], a[4],					     a[5], a[6], a[7], a[8], a[9],					     a[10], a[11], a[12], a[13],					     a[14], a[15]))); /* XXX MAX_ARGS */    }/********************************************************************************* objInit - initialize an object** This routine initializes an object to the specified class via the class* initialization method.** RETURNS: OK, or ERROR if object could not be initialized.** VARARGS2*/STATUS objInit    (    CLASS_ID classId,   /* object class of object to create */    OBJ_ID   objId,     /* pointer to object to initialize */    ...              /* optional arguments to create routine */    )    {    va_list pArg;	/* traverses argument list */    int ix;		/* handy index */    int a[OBJ_MAX_ARGS];/* indigenous variables */    if (OBJ_VERIFY (classId, classClassId) != OK)	return (ERROR);    va_start (pArg, objId);    for (ix = 0; ix < OBJ_MAX_ARGS; ++ix)	a[ix] = va_arg (pArg, int);	/* varargs into indigenous variables */    va_end (pArg);    return ((* classId->initRtn) (objId, a[0], a[1], a[2], a[3], a[4], a[5],				  a[6], a[7], a[8], a[9], a[10], a[11], a[12],				  a[13], a[14], a[15])); /* XXX MAX_ARGS */    }/********************************************************************************* objDelete - delete object and deallocate all associated memory** Deallocate memory associated with an object.** RETURNS: OK, or ERROR if object could not be deleted.*/STATUS objDelete    (    OBJ_ID objId        /* object to delete */    )    {    return (objDestroy (objId, TRUE, WAIT_FOREVER));    }/********************************************************************************* objTerminate - terminate object** Terminate an object.** RETURNS: OK, or ERROR if object could not be terminated.*/STATUS objTerminate    (    OBJ_ID objId        /* object to terminate */    )    {    return (objDestroy (objId, FALSE, WAIT_FOREVER));    }/********************************************************************************* objDestroy - destroy an object** Destroy an object, and optionally deallocate associated memory.** RETURNS: OK, or ERROR if object could not be destroyed.*/STATUS objDestroy    (    OBJ_ID objId,       /* object to terminate */    BOOL   dealloc,     /* deallocate memory associated with memory */    int    timeout      /* timeout */    )    {    CLASS_ID	pObjClass = CLASS_RESOLVE (objId);    if (OBJ_VERIFY (&pObjClass->objCore, classClassId) != OK)	return (ERROR);    return ((* pObjClass->destroyRtn) (objId, dealloc, timeout));    }#endif /* may utilize someday *//********************************************************************************* objShow - show information on an object** Call class attached show routine for an object.** RETURNS: OK, or ERROR if information could not be shown.*/STATUS objShow    (    OBJ_ID objId,       /* object to show information on */    int    showType     /* show type */    )    {    CLASS_ID	pObjClass = CLASS_RESOLVE (objId);    if (OBJ_VERIFY (&pObjClass->objCore, classClassId) != OK)	return (ERROR);    if (pObjClass->showRtn == NULL)	{	errnoSet (S_objLib_OBJ_NO_METHOD);	return (ERROR);	}    return ((* pObjClass->showRtn) (objId, showType));    }#if FALSE       /* may utilize someday *//********************************************************************************* objHelp - provide help for an object** Call class attached help routine for an object.** RETURNS: OK, or ERROR if help could not be provided.*/STATUS objHelp    (    OBJ_ID objId,       /* object to get help with */    int    helpType     /* help type */    )    {    CLASS_ID    pObjClass = CLASS_RESOLVE (objId);    if (OBJ_VERIFY (&pObjClass->objCore, classClassId) != OK)        return (ERROR);    if (pObjClass->helpRtn == NULL)	{	errnoSet (S_objLib_OBJ_NO_METHOD);	return (ERROR);	}    return ((* pObjClass->helpRtn) (objId, helpType));    }#endif/********************************************************************************* objAllocExtra - allocate an object from the object's partition with extra** Allocate memory from a class memory partition, for an object.  Extra bytes* may be requested.** RETURNS: pointer to object, or NULL if object could not allocated.*/void *objAllocExtra    (    FAST CLASS_ID classId,      /* object class id */    unsigned nExtraBytes,       /* additional bytes needed beyond object size */    void ** ppExtra             /* where to return ptr to extra bytes */                                /*   (NULL == don't return ptr) */    )    {    void *pObj;    /* return NULL if called from ISR or classId is invalid */    if ((INT_RESTRICT () != OK) || (OBJ_VERIFY (classId, classClassId) != OK))	return (NULL);    pObj = memPartAlloc (classId->objPartId, classId->objSize + nExtraBytes);    if (pObj != NULL)	{	classId->objAllocCnt ++;	/* keep track of allocation count */	if (ppExtra != NULL)	    *ppExtra = (void *) (((char *) pObj) + classId->objSize);	}    return (pObj);    }/********************************************************************************* objAlloc - allocate an object from the object's partition** Allocate memory from a class memory partition, for an object.** RETURNS: pointer to object, or NULL if object could not allocated.*/void *objAlloc    (    FAST CLASS_ID classId       /* object class id */    )    {    return (objAllocExtra (classId, 0, (void **) NULL));    }/********************************************************************************* objFree - deallocate an object from the object's partition** Deallocate memory from a class memory partition associated with an object.* RETURNS: OK, or ERROR if object could not deallocated.*/STATUS objFree    (    CLASS_ID classId,   /* class id of object */    char     *pObject   /* point to object memory to free */    )    {    if ((OBJ_VERIFY (classId, classClassId) != OK) ||        (memPartFree (classId->objPartId, pObject) != OK))	return (ERROR);    classId->objFreeCnt ++;		/* keep track of free count */    return (OK);    }/********************************************************************************* objCoreInit - initialize object core** Initialize and validate object core.*/void objCoreInit    (    OBJ_CORE    *pObjCore,      /* pointer to object core to initialize */    OBJ_CLASS   *pObjClass      /* pointer to object class */    )    {    pObjCore->pObjClass = pObjClass;		/* validate object */    pObjClass->objInitCnt ++;			/* keep track of object count */    }/********************************************************************************* objCoreTerminate - terminate object core** This routine terminates and invalidates an object.*/void objCoreTerminate    (    OBJ_CORE *pObjCore          /* pointer to object to invalidate */    )    {    pObjCore->pObjClass->objTerminateCnt ++;	/* keep track of terminates */    pObjCore->pObjClass = NULL;			/* invalidate object */    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产综合久久| 伊人开心综合网| 蜜桃一区二区三区四区| 日本电影亚洲天堂一区| 亚洲免费av高清| 一本色道久久综合精品竹菊| 国产亚洲欧美激情| 国产乱码一区二区三区| 精品国产免费一区二区三区香蕉| 日韩高清中文字幕一区| 日韩欧美一二三| 狠狠色狠狠色综合系列| 国产偷国产偷精品高清尤物 | 国产日韩欧美在线一区| 国产一区二区三区在线观看精品| 久久亚洲精品小早川怜子| 国产精品白丝av| 中文字幕一区二区三区在线播放| 成人app下载| 日韩精品欧美成人高清一区二区| 91精品国产综合久久久久久久久久| 天天综合网 天天综合色| 538prom精品视频线放| 国产成人aaa| 日韩精品1区2区3区| 日本一区二区三区四区在线视频| 色婷婷综合五月| 久久99精品国产| 一区二区在线免费| 久久久久久久久99精品| 欧美亚洲动漫制服丝袜| 六月婷婷色综合| 亚洲免费观看高清完整版在线观看 | 丝瓜av网站精品一区二区| 精品久久久久久综合日本欧美| 国产99久久久国产精品免费看| 一区二区三区中文免费| 国产日韩综合av| 色噜噜狠狠成人网p站| 国产精品原创巨作av| 午夜国产精品一区| 亚洲欧洲另类国产综合| 日韩午夜三级在线| 在线电影国产精品| 在线欧美日韩国产| 99久久久国产精品免费蜜臀| 日韩国产在线观看| 日本免费在线视频不卡一不卡二| 亚洲视频 欧洲视频| 国产精品久久久久久久久久免费看| 欧美一区二区三区成人| 欧美日韩午夜在线| 欧美日本视频在线| 欧美一区二区网站| 91精品综合久久久久久| 制服丝袜激情欧洲亚洲| 在线成人小视频| 日韩欧美一区在线| 欧美videofree性高清杂交| 欧美成人一区二区三区片免费 | 精品一区二区三区在线观看国产| 欧美aaaaaa午夜精品| 精品在线播放免费| 成人听书哪个软件好| 99久精品国产| 欧美日韩国产中文| 国产色91在线| 亚洲影院免费观看| 国产激情91久久精品导航| aaa亚洲精品| 日韩欧美国产精品| 国产精品久久午夜| 日本视频中文字幕一区二区三区| 免费观看久久久4p| 成人ar影院免费观看视频| 欧美日韩久久不卡| 久久久亚洲欧洲日产国码αv| 亚洲一区二区三区在线播放| 五月婷婷综合在线| 成人免费黄色大片| 91精品久久久久久久99蜜桃| 国产色一区二区| 午夜精品在线视频一区| 成人福利视频在线看| 欧美一级二级在线观看| 成人v精品蜜桃久久一区| 色综合天天综合在线视频| 国产69精品久久99不卡| 欧美日韩一区高清| 17c精品麻豆一区二区免费| 白白色亚洲国产精品| 欧美成人福利视频| 喷白浆一区二区| 日韩视频免费观看高清完整版 | 91精品国产综合久久久久久漫画| 国产精品美女久久久久久久久久久 | 国产成人精品三级麻豆| 欧美一区二区观看视频| 亚洲二区视频在线| 欧美日韩一区 二区 三区 久久精品| 国产精品天美传媒| 97成人超碰视| 日韩美女视频一区二区| 91在线观看下载| 亚洲欧美日韩国产手机在线| 99热这里都是精品| 中文字幕一区二区三区四区| 丁香婷婷综合激情五月色| 亚洲精品日日夜夜| 99国产精品久久久久| 91麻豆精品久久久久蜜臀| 国产精品久久午夜夜伦鲁鲁| 久久国产精品第一页| 在线观看日韩高清av| 欧美精品 日韩| 日韩一区二区电影| 美女mm1313爽爽久久久蜜臀| 精品视频在线免费观看| 日韩精品色哟哟| 国产日韩av一区| 欧美久久一区二区| 国产在线观看一区二区| 亚洲天堂av老司机| 国产精品国产三级国产普通话蜜臀 | 亚洲一区在线观看视频| 制服.丝袜.亚洲.中文.综合| 欧美日韩精品三区| 午夜精品久久久久久不卡8050| 制服.丝袜.亚洲.中文.综合| 国产乱人伦精品一区二区在线观看 | 亚洲色大成网站www久久九九| 欧美午夜精品久久久久久孕妇 | 日韩亚洲欧美在线观看| 成人国产精品免费| 麻豆视频一区二区| 亚洲无人区一区| 国产精品毛片a∨一区二区三区| 精品伦理精品一区| 91麻豆精品在线观看| 国产成人免费在线观看| 奇米综合一区二区三区精品视频| 亚洲欧美日韩久久精品| 国产精品少妇自拍| 久久精品夜色噜噜亚洲aⅴ| 欧美日韩专区在线| 91久久奴性调教| 日本精品免费观看高清观看| 国产盗摄一区二区三区| 国产一区二区三区观看| 美女脱光内衣内裤视频久久网站| 亚洲成人av资源| 国产精品久久久久久福利一牛影视 | 日韩精品一区二区三区在线观看 | 国产毛片精品国产一区二区三区| 亚洲18影院在线观看| 亚洲午夜在线电影| 亚洲1区2区3区视频| 天天做天天摸天天爽国产一区| 亚洲综合一二区| 性久久久久久久| 久久精品久久久精品美女| 久久99在线观看| 国产一区二区美女诱惑| 亚洲成人一二三| 久久日韩粉嫩一区二区三区| 日韩视频一区在线观看| 久久新电视剧免费观看| 亚洲日本韩国一区| 亚洲成人av中文| 国产精品伊人色| 欧美性视频一区二区三区| 欧美日韩一区二区三区在线 | 91麻豆蜜桃一区二区三区| 欧美另类变人与禽xxxxx| 欧美精品一区二区三区蜜桃视频| 国产欧美精品一区二区三区四区| 亚洲视频免费在线观看| 久久精品国产久精国产爱| 成人动漫在线一区| 久久亚洲精品国产精品紫薇| 亚洲男人的天堂在线aⅴ视频| 日本成人中文字幕在线视频| 国产乱国产乱300精品| 欧美挠脚心视频网站| 国产欧美一区二区精品性色 | 精品亚洲欧美一区| 精品视频1区2区3区| 亚洲图片你懂的| 国产成a人亚洲精| 欧美成人video| 美女一区二区视频| 欧美一级专区免费大片| 一区二区在线看| 91麻豆国产香蕉久久精品| 中文字幕乱码久久午夜不卡| 九九九久久久精品| 欧美大胆一级视频| 极品少妇xxxx精品少妇偷拍| 777奇米成人网| 精品一区二区三区久久|