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

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

?? memshow.c

?? 操作系統開發,vxwork操作系統源代碼
?? 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);    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费精品视频最新在线| 91精品国产综合久久福利软件| 色av综合在线| 精品久久一区二区| 亚洲国产另类av| 99久久免费国产| 久久久久一区二区三区四区| 亚洲一区二区精品视频| 成人激情免费电影网址| 精品第一国产综合精品aⅴ| 一区二区三区欧美日| 福利电影一区二区| 精品福利在线导航| 日日夜夜精品视频免费| 91免费观看国产| 国产精品欧美一区喷水| 美腿丝袜在线亚洲一区| 欧美喷水一区二区| 亚洲综合一二区| 色呦呦国产精品| 中文字幕在线播放不卡一区| 国产成人精品免费看| 2023国产精品自拍| 久久精品国产在热久久| 欧美电影在哪看比较好| 亚洲国产wwwccc36天堂| 91论坛在线播放| 亚洲欧美福利一区二区| 99综合电影在线视频| 久久精品视频一区二区三区| 国产真实乱对白精彩久久| 日韩精品一区二区三区视频播放| 午夜精品国产更新| 欧美日韩三级视频| 视频一区二区三区入口| 欧美日韩激情在线| 日韩一区精品字幕| 欧美一级xxx| 久久99精品久久久| 国产午夜精品在线观看| 成人午夜视频免费看| 国产精品久久久久久亚洲伦 | 99视频在线精品| 国产精品天干天干在线综合| 国产精品一色哟哟哟| 久久人人爽人人爽| 国产精品一区二区在线观看不卡| 久久蜜桃香蕉精品一区二区三区| 国产黄色精品网站| 亚洲欧美色图小说| 欧美亚洲一区二区在线| 奇米亚洲午夜久久精品| 26uuu亚洲综合色| av男人天堂一区| 亚洲精品成人少妇| 9191久久久久久久久久久| 久99久精品视频免费观看| 久久免费午夜影院| 91网站最新网址| 日日骚欧美日韩| 精品乱人伦小说| 色婷婷综合久久久久中文一区二区| 一区二区欧美国产| www国产成人免费观看视频 深夜成人网 | 美女网站视频久久| 日本一区二区三区免费乱视频| 91视频xxxx| 久久国产精品第一页| 中文字幕免费一区| 欧美日韩高清影院| 国产成人福利片| 亚洲mv在线观看| 国产精品天美传媒沈樵| 正在播放亚洲一区| 99国产欧美久久久精品| 三级一区在线视频先锋| 国产精品免费视频网站| 欧美一区二区三区免费视频| 91网站在线观看视频| 麻豆精品新av中文字幕| 亚洲狠狠丁香婷婷综合久久久| 精品伦理精品一区| 欧美日韩一区二区三区四区五区 | 欧美xxxxx牲另类人与| 91免费观看国产| 韩国成人精品a∨在线观看| 一区二区三区不卡在线观看| 国产日本欧美一区二区| 欧美一区二区三区人| 在线观看视频欧美| 成人免费看的视频| 国产一区日韩二区欧美三区| 午夜精品一区在线观看| 一区二区成人在线| 国产精品色哟哟网站| 亚洲精品一区二区三区福利| 91精品午夜视频| 欧美色综合网站| 99视频在线精品| 成人av网站在线观看| 国产精品99久久久久久有的能看| 日韩高清不卡一区二区| 午夜影院在线观看欧美| 亚洲自拍欧美精品| 洋洋av久久久久久久一区| 中文一区二区完整视频在线观看| 日韩欧美二区三区| 91精品国产综合久久精品| 欧美体内she精视频| 91免费国产在线| 色哟哟一区二区在线观看| 99re视频精品| 91在线观看美女| 91丝袜国产在线播放| av亚洲精华国产精华| 国产高清无密码一区二区三区| 免费欧美日韩国产三级电影| 日本va欧美va欧美va精品| 天天综合色天天综合色h| 日韩精品电影在线| 偷拍日韩校园综合在线| 日韩电影在线一区二区| 日本aⅴ精品一区二区三区| 免费高清不卡av| 国产自产高清不卡| 国产成a人无v码亚洲福利| 不卡av在线网| 色综合天天性综合| 欧美性受极品xxxx喷水| 欧美日韩国产影片| 日韩一区二区三区免费看 | 中文字幕亚洲成人| 亚洲日本一区二区| 一区二区三区免费| 性做久久久久久免费观看欧美| 婷婷夜色潮精品综合在线| 久久精品国产免费看久久精品| 狠狠色伊人亚洲综合成人| 成人免费观看男女羞羞视频| 色综合欧美在线视频区| 宅男噜噜噜66一区二区66| 欧美大片国产精品| 国产精品入口麻豆九色| 亚洲一区在线观看免费| 美国欧美日韩国产在线播放| 国产剧情av麻豆香蕉精品| 成人性色生活片免费看爆迷你毛片| 色综合久久综合中文综合网| 日韩一区二区三区四区| 国产精品人妖ts系列视频| 午夜精品福利一区二区三区av| 国产精品性做久久久久久| 欧美三级在线视频| 久久久久九九视频| 亚洲图片欧美综合| 国产成人亚洲精品狼色在线| 在线免费精品视频| 26uuuu精品一区二区| 亚洲国产精品一区二区www| 国产精品99久久久久久久女警| 欧美在线一二三| 久久久亚洲高清| 亚洲国产裸拍裸体视频在线观看乱了| 狠狠狠色丁香婷婷综合激情 | voyeur盗摄精品| 欧美一区二区播放| 中文字幕在线观看一区二区| 蜜臀久久99精品久久久久宅男 | 亚洲精选一二三| 国产麻豆成人精品| 欧美日韩www| 中文字幕在线不卡一区二区三区| 美女国产一区二区三区| 欧美性大战xxxxx久久久| 国产精品女上位| 国产一区三区三区| 91麻豆精品国产91久久久| 中文字幕一区在线| 国产精品一卡二卡| 日韩欧美资源站| 五月婷婷激情综合| 在线亚洲+欧美+日本专区| 国产精品久久久久精k8| 精品一区二区三区香蕉蜜桃 | 免费在线观看视频一区| 欧美曰成人黄网| 亚洲精品乱码久久久久久| 99久久精品久久久久久清纯| 国产亚洲婷婷免费| 久久99精品一区二区三区| 欧美一区二区在线播放| 日韩专区中文字幕一区二区| 久久久久久久免费视频了| 午夜精品福利久久久| 欧美日韩国产影片| 亚洲午夜久久久久| 欧美亚洲综合久久| 亚洲gay无套男同| 91精品国产综合久久久蜜臀粉嫩| 亚洲成人免费在线|