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

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

?? dlllib.c

?? vxworks的完整的源代碼
?? C
字號:
/* dllLib.c - efficient doubly linked list subroutine library *//* Copyright 1984-1998 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01n,11nov01,dee  Add ColdFire support01m,04sep98,cdp  make ARM CPUs with ARM_THUMB==TRUE use portable routines.01n,07mar00,zl   fixed syntax error from merge01m,03mar00,zl   merged SH support from T101l,22apr97,jpd  added support for optimised ARM code.01k,19mar95,dvs  removing tron references.01j,09jun93,hdn  added a support for I80X8601i,09jul92,hdn  put an optimized dllGet()01h,24jun92,ajm  pulled in optimizations for mips01g,26may92,rrr  the tree shuffle01f,19nov91,rrr  shut up some ansi warnings.01e,04oct91,rrr  passed through the ansification filter                  -changed functions to ansi style		  -fixed #else and #endif		  -changed VOID to void		  -changed copyright notice01d,23jul91,hdn  added conditional macro for optimized TRON codes.01c,28oct90,jcf  documentation.01b,10may90,jcf  fixed PORTABLE definition.01a,03jun89,jcf  written.*//*DESCRIPTIONThis subroutine library supports the creation and maintenance of adoubly linked list.  The user supplies a list descriptor (type DL_LIST)that will contain pointers to the first and last nodes in the list.The nodes in the list can be any user-defined structure, but they must reservespace for a pointer as their first element.  The forward chain is terminatedwith a NULL pointer.This library in conjunction with dllALib.s, and the macros defined in dllLib.h,provide a reduced version of the routines offered in lstLib(1).  Forefficiency, the count field has been eliminated, and enqueueing and dequeueingfunctions have been hand optimized..ne 16NON-EMPTY LIST:.CS   ---------             --------          --------   | head--------------->| next----------->| next---------   |       |             |      |          |      |      |   |       |        ------ prev |<---------- prev |      |   |       |       |     |      |          |      |      |   | tail------    |     | ...  |    ----->| ...  |      |   |-------|  |    v                 |                   v              |  -----               |                 -----              |   ---                |                  ---              |    -                 |                   -              ------------------------.CE.ne 12EMPTY LIST:.CS	-----------        |  head------------------        |         |             |        |  tail----------       |        |         |     v       v        |         |   -----   -----        -----------    ---     ---                        -	-.CEINCLUDE FILE: dllLib.h*//* LINTLIBRARY */#include "vxWorks.h"#include "dllLib.h"#include "stdlib.h"/* * optimized version available for 680X0, MIPS, I80X86, SH and ARM, * but not yet Thumb. */#if (defined(PORTABLE) || \     ((CPU_FAMILY != MC680X0) && \      (CPU_FAMILY != MIPS) && \      (CPU_FAMILY != I80X86) && \      (CPU_FAMILY != SH) && \      (CPU_FAMILY != COLDFIRE) && \      (CPU_FAMILY != ARM)) || \     ((CPU_FAMILY == ARM) && ARM_THUMB))#define dllLib_PORTABLE#endif/*********************************************************************** dllCreate - create a doubly linked list descriptor** This routine returns a pointer to an initialized doubly linked list* descriptor.** RETURNS: Pointer to a doubly linked list descriptor, or NULL if ERROR.*/DL_LIST *dllCreate (void)    {    FAST DL_LIST *pList = (DL_LIST *) malloc ((unsigned) sizeof (DL_LIST));    dllInit (pList);    return (pList);    }/*********************************************************************** dllInit - initialize doubly linked list descriptor** Initialize the specified list to an empty list.** RETURNS: OK, or ERROR if doubly linked list could not be initialized.*/STATUS dllInit    (    FAST DL_LIST *pList     /* pointer to list descriptor to be initialized */    )    {    pList->head	 = NULL;    pList->tail  = NULL;    return (OK);    }/********************************************************************************* dllDelete - terminate doubly linked list head free associated memory** Terminate the specified list and deallocated associated memory.** RETURNS: OK, or ERROR if doubly linked list could not be deleted.** ARGSUSED*/STATUS dllDelete    (    DL_LIST *pList     /* pointer to list head to be initialized */    )    {    free ((char *) pList);			/* free list */    return OK;    }/********************************************************************************* dllTerminate - terminate doubly linked list head** Terminate the specified list without deallocating associated memory.** RETURNS: OK, or ERROR if doubly linked list could not be terminated.** ARGSUSED*/STATUS dllTerminate    (    DL_LIST *pList     /* pointer to list head to be initialized */    )    {    return (OK);    }#ifdef dllLib_PORTABLE/************************************************************************** dllInsert - insert node in list after specified node** This routine inserts the specified node in the specified list.* The new node is placed following the specified 'previous' node in the list.* If the specified previous node is NULL, the node is inserted at the head* of the list.*/void dllInsert    (    FAST DL_LIST *pList,        /* pointer to list descriptor */    FAST DL_NODE *pPrev,        /* pointer to node after which to insert */    FAST DL_NODE *pNode         /* pointer to node to be inserted */    )    {    FAST DL_NODE *pNext;    if (pPrev == NULL)	{				/* new node is to be first in list */	pNext = pList->head;	pList->head = pNode;	}    else	{				/* make prev node point fwd to new */	pNext = pPrev->next;	pPrev->next = pNode;	}    if (pNext == NULL)	pList->tail = pNode;		/* new node is to be last in list */    else	pNext->previous = pNode;	/* make next node point back to new */    /* set pointers in new node */    pNode->next		= pNext;    pNode->previous	= pPrev;    }/************************************************************************** dllAdd - add node to end of list** This routine adds the specified node to the end of the specified list.*/void dllAdd    (    DL_LIST *pList,     /* pointer to list descriptor */    DL_NODE *pNode      /* pointer to node to be added */    )    {    dllInsert (pList, pList->tail, pNode);    }/************************************************************************** dllRemove - remove specified node in list** Remove the specified node in the doubly linked list.*/void dllRemove    (    DL_LIST *pList,             /* pointer to list descriptor */    DL_NODE *pNode              /* pointer to node to be deleted */    )    {    if (pNode->previous == NULL)	pList->head = pNode->next;    else	pNode->previous->next = pNode->next;    if (pNode->next == NULL)	pList->tail = pNode->previous;    else	pNode->next->previous = pNode->previous;    }/************************************************************************** dllGet - get (delete and return) first node from list** This routine gets the first node from the specified list, deletes the node* from the list, and returns a pointer to the node gotten.** RETURNS: Pointer to the node gotten, or NULL if the list is empty.*/DL_NODE *dllGet    (    FAST DL_LIST *pList         /* pointer to list from which to get node */    )    {    FAST DL_NODE *pNode = pList->head;    if (pNode != NULL)                      /* is list empty? */	{        pList->head = pNode->next;          /* make next node be 1st */        if (pNode->next == NULL)            /* is there any next node? */            pList->tail = NULL;             /*   no - list is empty */        else            pNode->next->previous = NULL;   /*   yes - make it 1st node */	}    return (pNode);    }#endif	/* dllLib_PORTABLE *//**************************************************************************** dllCount - report number of nodes in list** This routine returns the number of nodes in the given list.** CAVEAT* This routine must actually traverse the list to count the nodes.* If counting is a time critical fuction, consider using lstLib(1) which* maintains a count field.** RETURNS: Number of nodes in specified list.** SEE ALSO: lstLib(1).*/int dllCount    (    DL_LIST *pList      /* pointer to list descriptor */    )    {    FAST DL_NODE *pNode = DLL_FIRST (pList);    FAST int count = 0;    while (pNode != NULL)	{	count++;	pNode = DLL_NEXT (pNode);	}    return (count);    }/********************************************************************************* dllEach - call a routine for each node in a linked list** This routine calls a user-supplied routine once for each node in the* linked list.  The routine should be declared as follows:** .CS*  BOOL routine (pNode, arg)*      DL_NODE *pNode;	/@ pointer to a linked list node    @/*      int	arg;	/@ arbitrary user-supplied argument @/* .CE** The user-supplied routine should return TRUE if dllEach() is to* continue calling it with the remaining nodes, or FALSE if it is done and* dllEach() can exit.** RETURNS: NULL if traversed whole linked list, or pointer to DL_NODE that*          dllEach ended with.*/DL_NODE *dllEach    (    DL_LIST     *pList,         /* linked list of nodes to call routine for */    FUNCPTR     routine,        /* the routine to call for each list node */    int         routineArg      /* arbitrary user-supplied argument */    )    {    FAST DL_NODE *pNode = DLL_FIRST (pList);    while ((pNode != NULL) && ((* routine) (pNode, routineArg)))	pNode = DLL_NEXT (pNode);    return (pNode);			/* return node we ended with */    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人在线视频网址| 成人手机在线视频| 中文字幕在线观看一区| 9191久久久久久久久久久| 国产伦精品一区二区三区免费迷 | 色婷婷精品大在线视频| 免费观看在线综合| 亚洲精品国产视频| 国产偷国产偷精品高清尤物| 91精品免费观看| 一道本成人在线| 成人激情免费视频| 国产精品综合视频| 精品一区二区三区免费毛片爱| 亚洲在线视频网站| 成人免费视频在线观看| 久久九九影视网| 欧美电影免费观看完整版| 欧美日韩一区久久| 色哟哟亚洲精品| av成人动漫在线观看| 国产精品一区二区久久精品爱涩 | 欧美色爱综合网| 91色|porny| 97久久精品人人澡人人爽| 国产盗摄一区二区三区| 国产美女一区二区| 国产精品1024| 国产福利精品导航| 国产盗摄视频一区二区三区| 韩国精品免费视频| 国产最新精品免费| 久久99久国产精品黄毛片色诱| 免费高清视频精品| 捆绑调教一区二区三区| 日本欧美一区二区| 蜜桃一区二区三区在线观看| 日本午夜精品视频在线观看| 天堂一区二区在线| 亚洲一区二区三区美女| 午夜日韩在线电影| 男男gaygay亚洲| 久久99深爱久久99精品| 国内精品国产三级国产a久久| 国产在线精品一区二区| 成人综合在线观看| av一区二区三区四区| 91首页免费视频| 欧洲日韩一区二区三区| 欧美另类变人与禽xxxxx| 91精品啪在线观看国产60岁| 欧美一区二区三区影视| 精品国产乱码久久| 国产精品每日更新在线播放网址| 中文字幕制服丝袜一区二区三区| 一区二区三区中文字幕在线观看| 亚洲第一福利一区| 久久99国产精品久久| 国产成人精品在线看| av中文字幕在线不卡| 在线观看日韩一区| 91精品国产一区二区人妖| 日韩精品一区二区三区四区| 国产午夜精品一区二区| 亚洲乱码国产乱码精品精可以看| 午夜久久久影院| 国产在线播放一区三区四| 91影视在线播放| 日韩一区二区三区免费看| 中文一区在线播放| 亚洲香肠在线观看| 国内不卡的二区三区中文字幕| jlzzjlzz欧美大全| 欧美剧在线免费观看网站| 欧美xxxx老人做受| 亚洲免费三区一区二区| 蜜桃视频在线观看一区二区| 成人精品一区二区三区四区| 欧美日韩aaaaaa| 欧美高清在线一区| 日韩成人一级片| 成a人片国产精品| 日韩天堂在线观看| 亚洲色大成网站www久久九九| 婷婷中文字幕一区三区| 成人性视频免费网站| 91精品国产福利在线观看| 中文字幕在线一区免费| 久久电影网电视剧免费观看| 99久久久精品| 久久先锋影音av| 天天射综合影视| 97久久超碰国产精品| 欧美精品一区二区久久婷婷 | 亚洲欧美偷拍卡通变态| 久久99精品久久久久久国产越南| 色老汉av一区二区三区| 精品国产人成亚洲区| 一区二区三区日韩精品视频| 国产一区二区三区日韩| 欧美色精品天天在线观看视频| 国产日韩影视精品| 免费在线观看一区| 欧美亚日韩国产aⅴ精品中极品| 国产视频一区在线播放| 免费人成在线不卡| 欧美人动与zoxxxx乱| 亚洲欧美激情一区二区| 国产毛片一区二区| 日韩视频一区二区| 亚洲成在人线免费| 色综合久久久久久久久久久| 日本一区二区三区电影| 久久超碰97中文字幕| 这里只有精品免费| 亚洲成人动漫在线观看| 色综合久久天天| 综合婷婷亚洲小说| 成人中文字幕合集| 久久久蜜臀国产一区二区| 日本成人在线不卡视频| 欧美精品一二三| 日日夜夜一区二区| 欧美色精品在线视频| 亚洲午夜精品一区二区三区他趣| 色婷婷精品久久二区二区蜜臀av| 亚洲激情校园春色| 福利91精品一区二区三区| 久久婷婷久久一区二区三区| 精品一区二区三区在线观看国产| 欧美一级xxx| 美日韩一级片在线观看| 日韩欧美一区二区不卡| 免费观看一级特黄欧美大片| 欧美一区二区女人| 久久精品国产澳门| 精品剧情v国产在线观看在线| 日本怡春院一区二区| 日韩视频一区二区在线观看| 久久av资源站| 久久久久久夜精品精品免费| 国产麻豆一精品一av一免费 | av激情成人网| 国产精品妹子av| 99国产麻豆精品| 一区二区三区在线视频观看58| 在线国产亚洲欧美| 日韩福利视频导航| 日韩欧美亚洲一区二区| 国产一区二区三区日韩| 日本一区二区三区久久久久久久久不| 国产一区二区三区精品欧美日韩一区二区三区| 26uuu亚洲综合色| 国产福利一区二区三区在线视频| 亚洲国产成人在线| av网站免费线看精品| 一区二区三区中文字幕电影 | 精品久久久久av影院 | 欧美日韩一区二区三区在线 | 亚洲色图清纯唯美| 欧美日韩一卡二卡三卡| 久久国产精品区| 国产精品伦一区二区三级视频| 色成人在线视频| 老司机精品视频导航| 国产欧美精品一区二区色综合| 91视频.com| 欧美aaaaaa午夜精品| 国产精品天美传媒| 91国产免费看| 韩国精品一区二区| 亚洲欧美日韩在线| 日韩西西人体444www| 成人免费高清视频| 午夜精品福利一区二区三区av| 久久免费精品国产久精品久久久久| av不卡一区二区三区| 日本人妖一区二区| 中文字幕日本乱码精品影院| 欧美精品色综合| 99这里只有精品| 久久精品国产成人一区二区三区 | 免费人成黄页网站在线一区二区| 久久众筹精品私拍模特| 在线一区二区视频| 国模冰冰炮一区二区| 亚洲卡通动漫在线| 精品国产伦理网| 欧美视频三区在线播放| 国产91丝袜在线播放九色| 首页综合国产亚洲丝袜| 国产免费观看久久| 日韩视频一区在线观看| 91丨国产丨九色丨pron| 紧缚奴在线一区二区三区| 一区二区三区不卡视频| 日本一区二区三区电影| 欧美一区二区福利在线| 色94色欧美sute亚洲线路一ni| 国产乱子伦视频一区二区三区 |