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

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

?? objlib.c

?? VxWorks操作系統(tǒng)內(nèi)核源代碼
?? 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 */    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
最新不卡av在线| 国产一区二区三区| 国产乱码精品一区二区三区五月婷 | 一区二区三区四区五区视频在线观看| 成人av电影在线| 亚洲精品第一国产综合野| 欧亚洲嫩模精品一区三区| 亚洲不卡一区二区三区| 日韩欧美色综合| 国产成人av电影免费在线观看| 日本一区免费视频| 欧美体内she精高潮| 奇米一区二区三区| 国产亚洲美州欧州综合国| a在线播放不卡| 午夜精品一区在线观看| 精品国产髙清在线看国产毛片| 不卡的av中国片| 日韩中文字幕亚洲一区二区va在线 | 亚洲男人的天堂av| 91精品国产综合久久久久久| 国产精品99久久久久久有的能看| 亚洲激情自拍视频| 日韩欧美国产综合一区 | 亚洲超丰满肉感bbw| 久久综合色播五月| 在线免费观看日本欧美| 喷白浆一区二区| 中文av字幕一区| 欧美男女性生活在线直播观看| 国产成人免费在线观看不卡| 亚洲在线成人精品| 欧美国产一区在线| 欧美一区二区视频在线观看2022 | 免费成人性网站| 亚洲婷婷综合色高清在线| 日韩一级黄色大片| 91丨porny丨中文| 黄页视频在线91| 亚洲精品成a人| 欧美激情综合网| 欧美一区二区三区色| 91在线播放网址| 国产剧情一区二区三区| 视频在线观看91| 亚洲精品视频自拍| 国产精品色哟哟网站| 精品久久久久久久久久久院品网 | 韩国一区二区三区| 五月天丁香久久| 一区二区三区四区五区视频在线观看| 久久精品一区二区三区不卡| 欧美一区二区三区不卡| 欧美视频在线一区| 色婷婷激情综合| 91日韩一区二区三区| 福利电影一区二区| 国产成a人无v码亚洲福利| 久久精品国产成人一区二区三区| 亚洲国产色一区| 亚洲一级不卡视频| 亚洲激情成人在线| 亚洲欧美另类小说视频| 亚洲欧洲精品成人久久奇米网| 亚洲国产精品99久久久久久久久| 精品成人a区在线观看| 91精品国产一区二区| 欧美精品亚洲二区| 51精品国自产在线| 9191精品国产综合久久久久久 | 国产一区不卡视频| 国产一区二区在线视频| 久久99久久久久| 免费成人在线影院| 精品无人码麻豆乱码1区2区| 开心九九激情九九欧美日韩精美视频电影| 婷婷国产v国产偷v亚洲高清| 丝瓜av网站精品一区二区| 日本不卡视频在线| 久久精品国产99| 国精品**一区二区三区在线蜜桃 | 波多野结衣的一区二区三区| 国产在线精品国自产拍免费| 国产精品一级片在线观看| 国产成人啪午夜精品网站男同| 成人动漫中文字幕| 91香蕉视频mp4| 欧美午夜精品免费| 欧美一区二区三区爱爱| 精品国产成人在线影院 | www.欧美日韩国产在线| 91视频在线看| 欧美理论片在线| 精品国产91久久久久久久妲己| 欧美精品一区二区三区蜜桃视频| 国产性天天综合网| 亚洲免费观看在线观看| 首页欧美精品中文字幕| 久久99九九99精品| 成人av在线观| 911精品国产一区二区在线| 久久综合av免费| 国产精品大尺度| 午夜精品视频一区| 国产精品一级在线| 欧美伊人久久久久久久久影院| 欧美一区二区三区四区在线观看 | 国产精品一卡二卡| 在线观看视频一区二区欧美日韩| 91精品一区二区三区久久久久久 | 亚洲黄色免费电影| 免费成人结看片| 99精品视频在线观看免费| 91.com在线观看| 欧美—级在线免费片| 天堂一区二区在线| 成人爱爱电影网址| 日韩一区二区三区精品视频| 亚洲国产精品成人久久综合一区| 亚洲444eee在线观看| 国产98色在线|日韩| 69久久99精品久久久久婷婷 | 日韩av午夜在线观看| 国产成人精品三级麻豆| 欧美区一区二区三区| 中文字幕中文在线不卡住| 久久精品国产亚洲5555| 欧美中文字幕一区二区三区 | 精品粉嫩超白一线天av| 亚洲自拍偷拍网站| 成人国产免费视频| 精品国产露脸精彩对白 | 久久成人精品无人区| 欧亚一区二区三区| 中文字幕亚洲电影| 九一九一国产精品| 欧美日韩的一区二区| 综合激情成人伊人| 国产成人精品免费网站| 日韩精品中午字幕| 日韩电影一区二区三区| 色婷婷av一区二区三区软件| 欧美激情中文字幕| 国产精品一区二区在线播放| 日韩一区二区视频| 天堂av在线一区| 欧美日韩精品一区二区三区| 亚洲黄一区二区三区| 91在线丨porny丨国产| 国产农村妇女毛片精品久久麻豆 | 亚洲精品一区二区三区福利 | 国产精品麻豆网站| 大美女一区二区三区| 久久综合九色综合欧美就去吻| 日韩制服丝袜av| 91精品在线观看入口| 日韩影院免费视频| 欧美精品久久99| 丝袜亚洲另类欧美综合| 欧美日韩在线精品一区二区三区激情| 亚洲欧美色综合| 91免费观看国产| 亚洲美女少妇撒尿| 色天使色偷偷av一区二区| 亚洲欧美乱综合| 欧美最猛黑人xxxxx猛交| 亚洲丝袜另类动漫二区| 99re在线精品| 亚洲狼人国产精品| 欧美系列一区二区| 五月天婷婷综合| 欧美电影免费观看高清完整版在线| 日韩**一区毛片| 久久新电视剧免费观看| 国产91精品欧美| √…a在线天堂一区| 色婷婷久久一区二区三区麻豆| 亚洲综合色在线| 欧美一区二区三区影视| 精一区二区三区| 国产欧美一区二区精品性色超碰 | 在线视频国内一区二区| 亚洲国产cao| 日韩一级精品视频在线观看| 国产精品香蕉一区二区三区| 中文字幕亚洲成人| 欧美久久久久久久久| 美脚の诱脚舐め脚责91| 中文字幕成人网| 欧美性感一区二区三区| 日本欧美加勒比视频| 欧美激情中文不卡| 在线观看亚洲成人| 黄一区二区三区| 亚洲精品美国一| 日韩欧美国产电影| 99久久99久久精品国产片果冻| 日日夜夜精品免费视频| 国产欧美日韩亚州综合| 欧美怡红院视频|