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

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

?? memshow.c

?? Vxworks的系統(tǒng)源代碼Vxworks的系統(tǒng)源代碼Vxworks的系統(tǒng)源代碼Vxworks的系統(tǒng)源代碼Vxworks的系統(tǒng)源代碼
?? C
字號:
/* memShow.c - memory show routines *//* Copyright 1984-2002 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01t,06oct01,tam  fixed sign and formatting01s,05oct01,gls  moved printf in memPartInfoGet() to after semGive (SPR #20102)01r,26sep01,jws  move vxMP smMemPartShowRtn ptr to funcBind.c (SPR36055)01q,17mar99,jdi  doc: updated w/ info about proj facility (SPR 25727).01p,21feb99,jdi  doc: listed errnos.01o,17dec97,yp   (SPR #20054) memPartInfoGet now releases partId semaphore if 		 memPartBlockIsValid fails01n,10oct95,jdi  doc: added .tG Shell to SEE ALSOs;		 fixed typo in memPartInfoGet().01m,28mar95,ms	 memPartAvailable is now static, and doesn't call semTake().01l,18jan95,jdi  doc cleanup for memPartInfoGet().01k,01dec93,jag  added function memPartInfoGet.01j,20jan94,jmm  memPartAvailable() now gives the semaphore on error (spr 2908)01i,13sep93,jmm  fixed calll to memPartBlockIsValid() from memPartAvailable ()01h,30aug93,jmm  added memPartAvailable, changed memPartShow to use it01g,02feb93,jdi  doctweak (INCLUDE_SHOW_RTNS to ...ROUTINES).01f,22jan93,jdi  documentation cleanup for 5.1.01e,13nov92,dnw  added include of smObjLib.h01d,02oct92,jdi  documentation cleanup.01c,29jul92,pme  added NULL function pointer check for smObj routines.                 moved OBJ_VERIFY before first printf in memPartShow.01b,19jul92,pme  added shared memory management support.01a,01jul92,jcf  extracted from memLib.c.*//*DESCRIPTIONThis library contains memory partition information display routines.To use this facility, it must first be installed using memShowInit(),which is called automatically when the memory partition show facilityis configured into VxWorks using either of the following methods:.iPIf you use the configuration header files, defineINCLUDE_SHOW_ROUTINES in config.h..iPIf you use the Tornado project facility, select INCLUDE_MEM_SHOW..LPSEE ALSO: memLib, memPartLib,.pG "Target Shell,"windsh,.tG "Shell"*/#include "vxWorks.h"#include "semLib.h"#include "dllLib.h"#include "stdlib.h"#include "stdio.h"#include "string.h"#include "errno.h"#include "smObjLib.h"#include "private/memPartLibP.h"#include "private/smMemLibP.h"/* globals *//* forward declarations */static size_t memPartAvailable (PART_ID partId, size_t * largestBlock,				BOOL printEach); /******************************************************************************** memShowInit - initialize the memory partition show facility** This routine links the memory partition show facility into the VxWorks system.* These routines are included automatically when this show facility is* configured into VxWorks using either of the following methods:* .iP* If you use the configuration header files, define* INCLUDE_SHOW_ROUTINES in config.h.* .iP* If you use the Tornado project facility, select INCLUDE_MEM_SHOW.** RETURNS: N/A*/void memShowInit (void)    {    classShowConnect (memPartClassId, (FUNCPTR)memPartShow);    }/********************************************************************************* memShow - show system memory partition blocks and statistics** This routine displays statistics about the available and allocated memory* in the system memory partition.  It shows the number of bytes, the number* of blocks, and the average block size in both free and allocated memory,* and also the maximum block size of free memory.  It also shows the number* of blocks currently allocated and the average allocated block size.** In addition, if <type> is 1, the routine displays a list of all the blocks in* the free list of the system partition.** EXAMPLE* .CS*     -> memShow 1**     FREE LIST:*       num     addr      size*       --- ---------- ----------*         1   0x3fee18         16*         2   0x3b1434         20*         3    0x4d188    2909400* *     SUMMARY:*      status   bytes    blocks   avg block  max block*      ------ --------- -------- ---------- ----------*     current*        free   2909436        3     969812   2909400*       alloc    969060    16102         60        -*     cumulative*       alloc   1143340    16365         69        -* .CE** RETURNS: N/A** SEE ALSO: memPartShow(),* .pG "Target Shell,"* windsh,* .tG "Shell"*/void memShow     (    int type 	/* 1 = list all blocks in the free list */    )    {    memPartShow (memSysPartId, type);    }/********************************************************************************* memPartShow - show partition blocks and statistics** This routine displays statistics about the available and allocated memory* in a specified memory partition.  It shows the number of bytes, the number* of blocks, and the average block size in both free and allocated memory,* and also the maximum block size of free memory.  It also shows the number* of blocks currently allocated and the average allocated block size.** In addition, if <type> is 1, the routine displays a list of all the blocks* in the free list of the specified partition.** RETURNS: OK or ERROR.** ERRNO: S_smObjLib_NOT_INITIALIZED** SEE ALSO: memShow(),* .pG "Target Shell,"* windsh,* .tG "Shell"*/STATUS memPartShow     (    PART_ID partId,	/* partition ID                          */    int		 type		/* 0 = statistics, 1 = statistics & list */    )    {    int		numBlocks;    unsigned	totalBytes = 0;    unsigned	biggestWords = 0;    if (partId == NULL)	{	printf ("No partId specified.\n");	return (ERROR);	}    if (ID_IS_SHARED (partId))  /* partition is shared? */	{	if (smMemPartShowRtn == NULL)	    {	    errno = S_smObjLib_NOT_INITIALIZED;	    return (ERROR);	    }        return ((STATUS) (*smMemPartShowRtn)(SM_OBJ_ID_TO_ADRS (partId), type));	}    /* partition is local */    if (OBJ_VERIFY (partId, memPartClassId) != OK)	return (ERROR);    /* print out list header if we are going to print list */    if (type == 1)	{	printf ("\nFREE LIST:\n");	printf ("   num    addr       size\n");	printf ("  ---- ---------- ----------\n");	}    semTake (&partId->sem, WAIT_FOREVER);    if ((totalBytes = memPartAvailable (partId, &biggestWords, type)) == ERROR)	{	semGive (&partId->sem);        return (ERROR);	}    else        biggestWords /= 2;	/* memPartAvailable returns bytes, not words */        if (type == 1)	printf ("\n\n");    numBlocks = dllCount (&partId->freeList);    if (type == 1)	printf ("SUMMARY:\n");    printf (" status    bytes     blocks   avg block  max block\n");    printf (" ------ ---------- --------- ---------- ----------\n");    printf ("current\n");    if (numBlocks != 0)	printf ("   free %10u %9u %10u %10u\n", totalBytes, numBlocks,		totalBytes / numBlocks, 2 * biggestWords);    else	printf ("   no free blocks\n");    if (partId->curBlocksAllocated != 0)	printf ("  alloc %10u %9u %10u          -\n",		2 * partId->curWordsAllocated, partId->curBlocksAllocated,	        (2 * partId->curWordsAllocated) / partId->curBlocksAllocated);    else	printf ("   no allocated blocks\n");    printf ("cumulative\n");    if (partId->cumBlocksAllocated != 0)	printf ("  alloc %10u %9u %10u          -\n",		2 * partId->cumWordsAllocated, partId->cumBlocksAllocated,		(2 * partId->cumWordsAllocated) / partId->cumBlocksAllocated);    else	printf ("   no allocated blocks\n");    semGive (&partId->sem);    return (OK);    }/********************************************************************************* memPartAvailable - return the amount of available memory in the partition** This routine returns the amount of available memory in a specified partition.* Additionally, if largestBlock is set to non-NULL, the value it points to* is set to the size in bytes of the largest available block.* * If printEach is TRUE, each block's address and size is printed.* * RETURNS: Number of bytes of remaining memory, or ERROR.** NOMANUAL*/static size_t memPartAvailable     (    PART_ID 	 partId, 	/* partition ID                              */    size_t *     largestBlock,	/* returns largest block of memory in bytes  */    BOOL	 printEach	/* TRUE if each block to be printed          */    )    {    BLOCK_HDR *	 pHdr;    DL_NODE *	 pNode;    size_t	 totalBytes   = 0;    size_t	 biggestWords = 0;    int		 ix           = 1;    if (ID_IS_SHARED (partId))  /* partition is shared? */	{	if (smMemPartShowRtn == NULL)	    {	    errno = S_smObjLib_NOT_INITIALIZED;	    return (ERROR);	    }	/* shared partitions not supported yet */	        return (ERROR);	}    /* partition is local */    if (OBJ_VERIFY (partId, memPartClassId) != OK)	return (ERROR);    for (pNode = DLL_FIRST (&partId->freeList);	 pNode != NULL;	 pNode = DLL_NEXT (pNode))	{	pHdr = NODE_TO_HDR (pNode);	/* check consistency and delete if not */	if (!memPartBlockIsValid (partId, pHdr, pHdr->free))	    {	    printf ("  invalid block at %#x deleted\n", (UINT) pHdr);	    dllRemove (&partId->freeList, HDR_TO_NODE (pHdr));	    return (ERROR);	    }	else	    {	    totalBytes += 2 * pHdr->nWords;	    if (pHdr->nWords > biggestWords)		biggestWords = pHdr->nWords;	    if (printEach)		printf ("  %4d 0x%08x %10u\n", ix++, (UINT) pHdr,			(UINT) 2 * pHdr->nWords);	    }	}    if (largestBlock != NULL)        *largestBlock = biggestWords * 2;    return (totalBytes);    }/********************************************************************************* memPartInfoGet - get partition information** This routine takes a partition ID and a pointer to a MEM_PART_STATS structure.* All the parameters of the structure are filled in with the current partition* information.** RETURNS: OK if the structure has valid data, otherwise ERROR.** SEE ALSO: memShow()*/STATUS memPartInfoGet     (    PART_ID 		partId,		/* partition ID    	     */    MEM_PART_STATS    * ppartStats      /* partition stats structure */    )    {    BLOCK_HDR    * pHdr;    DL_NODE      * pNode;    if (partId == NULL || ppartStats == NULL)	{	return (ERROR);	}    if (ID_IS_SHARED (partId))  /* partition is shared? */	{	return (ERROR);         /* No support for Shared Partitions */	}    /* partition is local */    if (OBJ_VERIFY (partId, memPartClassId) != OK)	return (ERROR);    ppartStats->numBytesFree     = 0;    ppartStats->numBlocksFree    = 0;    ppartStats->maxBlockSizeFree = 0;    ppartStats->numBytesAlloc    = 0;    ppartStats->numBlocksAlloc   = 0;    semTake (&partId->sem, WAIT_FOREVER);    /* Get free memory information */    for (pNode = DLL_FIRST (&partId->freeList);	 pNode != NULL;	 pNode = DLL_NEXT (pNode))	{	pHdr = NODE_TO_HDR (pNode);	/* check consistency and delete if not */	if (!memPartBlockIsValid (partId, pHdr, pHdr->free))	    {	    dllRemove (&partId->freeList, HDR_TO_NODE (pHdr));    	    semGive (&partId->sem);	    printf ("  invalid block at %#x deleted\n", (UINT) pHdr);	    return (ERROR);	    }	else	    {	    /* All byte counts are in words, the conversion is done later */	    ppartStats->numBytesFree +=  pHdr->nWords;	    ppartStats->numBlocksFree++;	    if (ppartStats->maxBlockSizeFree < pHdr->nWords)		ppartStats->maxBlockSizeFree = pHdr->nWords;	    }	}    /* Get allocated memory information */    if (partId->curBlocksAllocated != 0)	{	ppartStats->numBytesAlloc  = partId->curWordsAllocated; 	ppartStats->numBlocksAlloc = partId->curBlocksAllocated;	}    semGive (&partId->sem);    /* Convert from words to bytes */    ppartStats->numBytesFree *= 2;    ppartStats->maxBlockSizeFree *= 2;    ppartStats->numBytesAlloc  *= 2;    return (OK);    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人做爰69片免费看网站| 午夜免费久久看| 日本中文字幕一区二区视频| 欧美专区日韩专区| 国产精品激情偷乱一区二区∴| 国产中文一区二区三区| 91视频精品在这里| 国产精品国产自产拍在线| 成人激情电影免费在线观看| 久久久国产午夜精品| 国产精品一区免费视频| 国产亚洲一区字幕| 成人自拍视频在线| 中文字幕在线不卡| 色综合色狠狠综合色| 亚洲午夜久久久久久久久电影网 | 天堂成人免费av电影一区| 91福利国产精品| 亚洲高清中文字幕| 91精品国产91综合久久蜜臀| 日本aⅴ免费视频一区二区三区| 51久久夜色精品国产麻豆| 人人精品人人爱| 精品久久久久一区二区国产| 国产成人精品网址| 国产精品家庭影院| 欧美天堂一区二区三区| 亚洲欧美视频在线观看| 欧美性xxxxxx少妇| 麻豆精品久久精品色综合| 欧美激情中文不卡| 国产一区二区91| 亚洲免费观看高清完整| 欧美亚洲国产一区在线观看网站| 日韩黄色免费网站| 久久久久国产精品厨房| 99re热这里只有精品免费视频| 亚洲午夜视频在线| 国产亚洲一本大道中文在线| 99精品久久只有精品| 日韩制服丝袜先锋影音| 国产片一区二区三区| 欧美伊人久久大香线蕉综合69| 青草av.久久免费一区| 久久久亚洲国产美女国产盗摄| 日本韩国欧美在线| 美女脱光内衣内裤视频久久网站| 欧美激情艳妇裸体舞| 91麻豆国产在线观看| 精品一区二区三区日韩| 亚洲精品中文字幕在线观看| 日韩精品专区在线| 欧美性受xxxx黑人xyx性爽| 偷拍日韩校园综合在线| 欧美高清在线精品一区| 欧美日韩第一区日日骚| 精品亚洲成av人在线观看| 亚洲欧美日韩电影| 精品乱人伦小说| 欧美日韩和欧美的一区二区| 在线观看av一区| 91视频xxxx| www.日韩精品| 国产精品1区2区3区在线观看| 日本不卡免费在线视频| 日韩影院免费视频| 午夜视频在线观看一区二区三区| 亚洲欧美激情在线| 国产精品久久久久久一区二区三区| 精品第一国产综合精品aⅴ| 欧美精品色一区二区三区| 欧美三级资源在线| 欧美一a一片一级一片| 欧美影院精品一区| 欧美人体做爰大胆视频| 欧美日韩亚洲综合| 欧美福利电影网| 欧美日韩三级一区二区| 欧美疯狂做受xxxx富婆| 宅男噜噜噜66一区二区66| 欧美日韩电影一区| 日韩亚洲国产中文字幕欧美| 欧美一级高清大全免费观看| 欧美一区中文字幕| 欧美成人aa大片| 久久综合九色综合久久久精品综合| 精品欧美一区二区久久| wwwwxxxxx欧美| 国产日韩v精品一区二区| 国产欧美一区二区三区鸳鸯浴 | 欧美伊人久久久久久久久影院 | 91美女福利视频| 在线看不卡av| 欧美日韩国产综合一区二区| 欧美一区二区三区免费观看视频| 欧美一区二区女人| 久久久精品国产免大香伊| 国产精品久久午夜| 一区二区三区久久| 免费av成人在线| 国产精品一二三| 北岛玲一区二区三区四区| 色婷婷av久久久久久久| 91精品在线麻豆| 久久女同精品一区二区| 樱桃国产成人精品视频| 免费黄网站欧美| 成人动漫一区二区| 欧美二区三区91| 国产女人水真多18毛片18精品视频| 国产精品动漫网站| 天堂蜜桃91精品| 丰满少妇久久久久久久| 欧美性感一区二区三区| 久久久亚洲高清| 一区二区三区国产豹纹内裤在线| 欧美aaaaa成人免费观看视频| 国产成人精品免费| 欧美日韩一区三区| 国产欧美日韩另类视频免费观看| 亚洲资源在线观看| 成人妖精视频yjsp地址| 欧美日韩亚洲综合| 中文字幕二三区不卡| 午夜激情久久久| 成人av一区二区三区| 欧美日韩夫妻久久| 综合欧美一区二区三区| 人人爽香蕉精品| 色狠狠综合天天综合综合| 久久夜色精品国产欧美乱极品| 亚洲免费高清视频在线| 国产激情一区二区三区| 91精品国产手机| 亚洲综合色噜噜狠狠| 国产成人一级电影| 欧美一区二区免费视频| 亚洲午夜久久久久久久久电影院| 成人午夜看片网址| 精品久久一区二区| 天天综合天天综合色| 91色.com| 国产精品天干天干在线综合| 蜜臀av一区二区三区| 欧美色图第一页| 亚洲另类中文字| av在线一区二区三区| 久久精品亚洲一区二区三区浴池| 日韩成人一区二区三区在线观看| 在线免费av一区| 亚洲男人天堂av| 成人黄页在线观看| 国产欧美一区二区精品秋霞影院 | 在线观看日韩电影| 中文字幕一区二区在线观看| 国产成人高清视频| 26uuu亚洲婷婷狠狠天堂| 美脚の诱脚舐め脚责91| 欧美另类高清zo欧美| 亚洲电影激情视频网站| 欧美亚洲国产一卡| 亚洲国产精品一区二区久久| 欧美亚洲高清一区| 亚洲国产毛片aaaaa无费看| 一本大道久久精品懂色aⅴ| **欧美大码日韩| 色狠狠桃花综合| 亚洲自拍偷拍欧美| 欧美性生活一区| 亚洲二区在线观看| 欧美肥妇毛茸茸| 日韩av电影天堂| 精品久久久久99| 国产一区二区三区不卡在线观看| 欧美精品一区二区蜜臀亚洲| 国内精品伊人久久久久av影院| 精品久久一区二区| 福利一区二区在线| 亚洲欧洲色图综合| 91国产免费看| 免费在线欧美视频| 精品处破学生在线二十三| 粉嫩蜜臀av国产精品网站| 国产精品久久久久9999吃药| 91麻豆国产香蕉久久精品| 亚洲国产精品一区二区久久| 欧美一区二区三区在| 国产乱子伦视频一区二区三区 | 亚洲女人的天堂| 欧美日韩国产系列| 韩国精品在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 99re成人精品视频| 午夜精品久久久久久久| 欧美大片在线观看一区| 国产黑丝在线一区二区三区| 亚洲美腿欧美偷拍| 欧美一区二区三区精品| 成人黄色软件下载| 石原莉奈一区二区三区在线观看|