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

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

?? 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一区二区三区免费野_久草精品视频
香蕉乱码成人久久天堂爱免费| 日本成人在线一区| 亚洲精品国产一区二区精华液| 性做久久久久久久免费看| 国产剧情在线观看一区二区| 色爱区综合激月婷婷| 精品国产制服丝袜高跟| 亚洲精品老司机| 丁香婷婷综合色啪| 欧美成人a∨高清免费观看| 亚洲精选在线视频| 成人激情免费视频| 日韩精品在线一区| 天天做天天摸天天爽国产一区| 国产suv精品一区二区三区| 日韩三级视频在线看| 亚洲在线观看免费视频| 国产a区久久久| 久久久国产精品不卡| 日本aⅴ免费视频一区二区三区 | 国产亲近乱来精品视频| 午夜精品久久久久久久99樱桃| 99精品久久99久久久久| 欧美激情一区在线| 国产乱一区二区| 精品国产青草久久久久福利| 天天操天天综合网| 欧美亚洲一区二区在线| 一区二区三区在线观看视频| 一本色道a无线码一区v| 亚洲视频在线一区二区| 成人黄色在线视频| 亚洲欧洲一区二区在线播放| 成人免费看片app下载| 国产日韩综合av| 丰满岳乱妇一区二区三区| 欧美激情艳妇裸体舞| 国产成人av电影免费在线观看| 久久―日本道色综合久久| 国产大陆精品国产| 中国色在线观看另类| 99re亚洲国产精品| 亚洲精品国产高清久久伦理二区| www.综合网.com| 亚洲精品视频在线观看免费| 欧美在线小视频| 午夜国产不卡在线观看视频| 6080国产精品一区二区| 六月丁香婷婷久久| 中文字幕欧美日本乱码一线二线| 成人av在线影院| 亚洲视频1区2区| 欧美在线观看一区二区| 美腿丝袜亚洲色图| 国产日韩欧美高清| 欧洲亚洲精品在线| 美国一区二区三区在线播放| 国产午夜精品一区二区三区嫩草| hitomi一区二区三区精品| 亚洲自拍都市欧美小说| 日韩欧美国产wwwww| 国产激情视频一区二区三区欧美| 国产精品国产三级国产aⅴ中文| 在线观看精品一区| 精品在线一区二区三区| 最新成人av在线| 欧美日韩日日骚| 国产在线国偷精品产拍免费yy | 精品国产免费视频| 99久久99久久综合| 日本在线不卡视频| 国产精品久久久久久久久免费桃花| 欧美日韩一卡二卡三卡 | 久久久www免费人成精品| 色综合久久88色综合天天免费| 蜜臀久久99精品久久久久久9 | 久久久久久久电影| 欧美中文字幕不卡| 成人亚洲精品久久久久软件| 亚洲一二三区不卡| 国产精品全国免费观看高清| 欧美高清精品3d| 99久久精品免费精品国产| 日韩av一区二区在线影视| 一色屋精品亚洲香蕉网站| 精品伦理精品一区| 欧美色精品在线视频| 国产成人av电影在线观看| 日韩精品1区2区3区| 亚洲人成精品久久久久久| 精品国产乱子伦一区| 欧美日韩一区视频| 99久久精品国产观看| 国产一区二区三区精品欧美日韩一区二区三区 | 中文字幕中文字幕一区二区| 欧美日韩一区成人| 日本高清不卡视频| 成人深夜在线观看| 国产一级精品在线| 久久草av在线| 久久精工是国产品牌吗| 日韩av一区二| 午夜激情久久久| 婷婷开心激情综合| 亚洲最大的成人av| 亚洲女同一区二区| 最新成人av在线| 中文字幕综合网| 中文字幕一区二区不卡| 欧美韩国日本一区| 中文字幕欧美日韩一区| 国产亚洲欧美在线| 国产精品免费久久| 中文字幕在线播放不卡一区| 中文字幕的久久| 国产精品区一区二区三| 国产精品国产自产拍在线| 中文字幕一区二| 亚洲日本丝袜连裤袜办公室| 亚洲欧洲在线观看av| 樱桃国产成人精品视频| 亚洲二区视频在线| 日日骚欧美日韩| 免费看精品久久片| 国产精品综合网| 成人黄色大片在线观看| 91免费小视频| 欧美美女一区二区| 久久亚洲影视婷婷| 欧美国产日韩亚洲一区| 日韩美女精品在线| 亚洲成人你懂的| 久久电影网站中文字幕| 国产很黄免费观看久久| 99久久综合国产精品| 色拍拍在线精品视频8848| 欧美日韩三级在线| www一区二区| 中文字幕一区二| 婷婷国产v国产偷v亚洲高清| 久久精品国产亚洲一区二区三区| 国产精品一二三四五| 色域天天综合网| 欧美一区二区三区视频在线观看| 欧美va在线播放| 中文字幕在线不卡一区| 日韩电影免费在线观看网站| 国产一二精品视频| 色噜噜狠狠成人中文综合| 91精品国产综合久久国产大片| 久久久亚洲精华液精华液精华液| 日韩一区欧美一区| 捆绑紧缚一区二区三区视频| 成人黄色软件下载| 91精品麻豆日日躁夜夜躁| 久久精品视频一区| 日韩**一区毛片| 本田岬高潮一区二区三区| 欧美蜜桃一区二区三区| 国产免费观看久久| 日韩高清不卡在线| 97精品国产露脸对白| 日韩一区二区视频| 亚洲男人天堂一区| 国产乱码精品一区二区三区av | 蜜桃久久久久久| 色欧美88888久久久久久影院| 日韩欧美一二三区| 亚洲综合久久av| 成人免费的视频| 欧美刺激脚交jootjob| 亚洲国产日韩在线一区模特 | 国产精品理论片在线观看| 日韩国产一区二| 色94色欧美sute亚洲线路一久| 久久久一区二区三区捆绑**| 天天色天天爱天天射综合| 91久久一区二区| 欧美激情在线一区二区三区| 免费精品视频最新在线| 欧美日韩一区二区在线观看| 亚洲精品美腿丝袜| 成人激情开心网| 国产欧美精品一区| 国产91综合网| 国产女人18水真多18精品一级做| 美女在线视频一区| 538在线一区二区精品国产| 一区二区三区中文字幕在线观看| 99久久婷婷国产| 国产精品久久久久久久久免费桃花| 国产资源精品在线观看| 日韩欧美你懂的| 九九视频精品免费| 日韩午夜在线观看| 日本aⅴ亚洲精品中文乱码| 欧美精品久久一区| 日韩精品亚洲一区| 欧美一级免费大片| 免费观看91视频大全|