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

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

?? objlib.c

?? vxworks 5.5 kernel code
?? 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羞羞动漫久久久| 亚洲一区二区三区激情| www久久久久| 国产三级久久久| 亚洲人精品午夜| 一区二区三区欧美亚洲| 日韩av在线播放中文字幕| 免费亚洲电影在线| 成人在线视频一区| aaa欧美色吧激情视频| 欧美军同video69gay| 久久久午夜电影| 亚洲精品成人少妇| 国产一区中文字幕| 欧美在线视频全部完| 亚洲精品一区二区三区蜜桃下载| 国产婷婷色一区二区三区| 亚洲欧洲99久久| 蜜臀av一级做a爰片久久| 99久久99久久久精品齐齐| 7777精品伊人久久久大香线蕉 | 亚洲伦理在线免费看| 日韩黄色免费电影| 97精品视频在线观看自产线路二| 日韩免费视频线观看| 亚洲高清不卡在线观看| 成人h动漫精品一区二| 精品国产第一区二区三区观看体验| 亚洲欧美日韩在线播放| 成人午夜在线播放| 精品国产伦理网| 久久成人免费电影| 精品免费国产二区三区| 日韩不卡一区二区三区| 久久精工是国产品牌吗| 欧美福利一区二区| 青草国产精品久久久久久| 欧美日韩免费一区二区三区| 亚洲色图在线视频| 91久久一区二区| 亚洲国产乱码最新视频| 欧美日韩免费一区二区三区视频 | 国产精品自拍一区| 日韩精品最新网址| 另类小说综合欧美亚洲| 欧美日精品一区视频| 免费视频最近日韩| 久久亚洲一区二区三区明星换脸| 国产成人在线网站| 欧美国产丝袜视频| 一本色道综合亚洲| 午夜视频一区二区| 欧美精品一区二区三区久久久| 久久激情五月激情| 色屁屁一区二区| 色综合久久久久久久久久久| 国产三级一区二区| 福利电影一区二区| 亚洲欧美国产高清| 精品国内二区三区| 99精品国产热久久91蜜凸| 中文字幕中文字幕一区二区| 成人国产精品免费观看动漫| 亚洲国产视频一区二区| 欧美成人精品高清在线播放| 国产成人免费视| 亚洲成人av免费| 亚洲蜜臀av乱码久久精品| 日韩精品一区二区三区三区免费| 一道本成人在线| 99热在这里有精品免费| 国产精品一区2区| 久久99久久99| 秋霞国产午夜精品免费视频| 亚洲综合免费观看高清完整版| 久久久激情视频| 国产三级一区二区三区| 国产婷婷一区二区| 日本一区二区动态图| 欧美变态tickle挠乳网站| 欧美日韩免费电影| 在线成人高清不卡| 欧美一区二区三区在线| 欧美精品电影在线播放| 欧美日韩免费不卡视频一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 成人午夜私人影院| 91香蕉视频mp4| 欧美日韩在线播| 欧美一区二区视频在线观看 | 国产精品久久久久三级| 亚洲国产精品av| 亚洲综合一二三区| 天天综合色天天| 懂色av一区二区三区蜜臀| 成人一级视频在线观看| 91福利精品第一导航| 欧美日韩mp4| 国产欧美一区二区精品仙草咪| 国产天堂亚洲国产碰碰| 亚洲美女偷拍久久| 另类小说图片综合网| 不卡一二三区首页| 欧美一区二区人人喊爽| 国产精品嫩草影院av蜜臀| 亚洲老司机在线| 国产盗摄精品一区二区三区在线| 91麻豆国产自产在线观看| 日韩午夜小视频| 亚洲图片欧美色图| 久久国产成人午夜av影院| 色综合色狠狠综合色| 国产性色一区二区| 日韩高清一区二区| 在线观看日韩电影| 亚洲欧洲日韩一区二区三区| 日本在线不卡一区| 色婷婷综合久色| 欧美国产日韩在线观看| 日韩成人伦理电影在线观看| 成人黄色777网| 久久色在线观看| 久久国产精品72免费观看| 欧美精选在线播放| 亚洲第一av色| 欧美精品视频www在线观看| 国产精品成人在线观看| 成人禁用看黄a在线| 国产精品女同一区二区三区| 成人黄色在线视频| 亚洲欧美另类久久久精品2019| 成人成人成人在线视频| 国产精品久久久99| 色婷婷久久99综合精品jk白丝 | 粉嫩av一区二区三区| 久久久国产精品午夜一区ai换脸| 国产一区二区三区在线观看精品 | 久久99精品视频| 久久久久久久网| 91免费观看视频在线| 一区二区三区.www| 日韩欧美久久一区| 成人性生交大合| 性久久久久久久| 国产精品久久久久7777按摩| 国产.欧美.日韩| 亚洲一二三区不卡| 国产日产欧美一区二区三区| 99久久精品费精品国产一区二区| 亚洲国产欧美日韩另类综合 | 蜜芽一区二区三区| 成人欧美一区二区三区视频网页| 在线免费av一区| 韩国av一区二区| 一级做a爱片久久| 久久综合久久综合久久| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产成人精品aa毛片| 亚洲成人av福利| 国产精品白丝在线| 久久伊人蜜桃av一区二区| 一本到高清视频免费精品| 国产二区国产一区在线观看| 亚洲一区二区三区四区不卡| 欧美激情一区在线| 精品乱人伦一区二区三区| 欧美久久免费观看| 在线视频综合导航| 色吧成人激情小说| 成人av资源网站| 91色porny在线视频| 9i在线看片成人免费| jlzzjlzz亚洲日本少妇| 国产精品香蕉一区二区三区| 黄一区二区三区| 伦理电影国产精品| 国产美女久久久久| 99天天综合性| 日本韩国一区二区| 欧美人妖巨大在线| 精品国产a毛片| 国产精品久久久久久久久快鸭| 国产精品欧美极品| 亚洲精品第1页| 婷婷丁香激情综合| 韩国精品在线观看| 从欧美一区二区三区| 欧美系列日韩一区| 欧美一区二区三区啪啪| 国产日韩欧美电影| 亚洲自拍偷拍麻豆| 狠狠色丁香久久婷婷综合_中 | xnxx国产精品| 亚洲日本免费电影| 天堂蜜桃91精品| 成人av资源在线观看| 欧美精品久久久久久久多人混战| 久久这里只有精品视频网| 综合电影一区二区三区 |