smFixBlkShow.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* smFixBlkShow.c - fixed block shared memory manager show utility (VxMP Option) */
  2. /* Copyright 1984-2002 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01e,06may02,mas  cache flush and volatile fix (SPR 68334); bridge flush fix
  7.  (SPR 68844)
  8. 01d,24oct01,mas  doc update (SPR 71149)
  9. 01c,29jan93,pme  added little endian support
  10. 01b,02oct92,pme  added SPARC support.
  11. 01a,19jul92,pme  written.
  12. */
  13. /*
  14. DESCRIPTION
  15. This library provides routines to show current status and statistics
  16. for the fixed block shared memory manager.
  17. There are no user callable routines.
  18. AVAILABILITY
  19. This module is distributed as a component of the unbundled shared memory
  20. support option, VxMP.
  21. SEE ALSO: smFixBlkLib, smObjLib
  22. NOROUTINES
  23. */
  24. /* includes */
  25. #include "vxWorks.h"
  26. #include "cacheLib.h"
  27. #include "smObjLib.h"
  28. #include "smLib.h"
  29. #include "smMemLib.h"
  30. #include "stdlib.h"
  31. #include "stdio.h"
  32. #include "string.h"
  33. #include "errno.h"
  34. #include "netinet/in.h"
  35. #include "private/smFixBlkLibP.h"
  36. /******************************************************************************
  37. *
  38. * smFixBlkPartShow - show fixed block shared partition statistics
  39. *
  40. * For a specified fixed block shared partition, this routine displays the total 
  41. * number of blocks in the partition and the block size. It also shows 
  42. * the number of blocks currently allocated, and the cumulative number of
  43. * allocated blocks.
  44. *
  45. * <gPartId> is the global (system wide) identifier of the partition to 
  46. * use. Its value is the global address of the partition structure. 
  47. *
  48. * WARNING: This routine does not get exclusive access to the partition 
  49. *          to display its status.
  50. *
  51. * RETURNS: OK or ERROR.
  52. *
  53. * ERRNO:
  54. *
  55. *   S_smMemLib_INVALID_PART_ID
  56. *
  57. * NOMANUAL
  58. */
  59. STATUS smFixBlkPartShow 
  60.     (
  61.     SM_FIX_BLK_PART_ID gPartId  /* global partition id to use */
  62.     )
  63.     {
  64.     SM_FIX_BLK_PART_ID volatile partId;  /* local address of partition */
  65.     int                         tmp;
  66.     partId = (SM_FIX_BLK_PART_ID volatile) GLOB_TO_LOC_ADRS (gPartId);
  67.     if (partId == LOC_NULL)
  68. {
  69. printf ("No partId specified.n");
  70. return (ERROR);
  71. }
  72.     CACHE_PIPE_FLUSH ();                        /* CACHE FLUSH   [SPR 68334] */
  73.     tmp = partId->verify;                       /* PCI bridge bug [SPR 68844]*/
  74.     if (SM_OBJ_VERIFY (partId) != OK)
  75.         return (ERROR);
  76.     /* now print the statistics without locking access to partition */
  77.     printf ("nBlock size                  : %d bytes  n", 
  78.     ntohl (partId->blockSize));
  79.     printf ("Allocated blocks            : max : %d current : %d free : %dn", 
  80.      ntohl (partId->totalBlocks),
  81.      ntohl (partId->curBlocksAllocated),
  82.      (ntohl(partId->totalBlocks) - ntohl(partId->curBlocksAllocated)));
  83.     printf ("Cumulative allocated blocks : %dn", 
  84.     ntohl (partId->cumBlocksAllocated));
  85.     return (OK);
  86.     }