aioPxShow.c
上传用户:baixin
上传日期:2008-03-13
资源大小:4795k
文件大小:2k
开发平台:

MultiPlatform

  1. /* aioPxShow.c - asynchronous I/O (AIO) show library */
  2. /* Copyright 1984-1994 Wind River Systems, Inc. */
  3. #include "copyright_wrs.h"
  4. /*
  5. modification history
  6. --------------------
  7. 01e,08apr94,kdl  changed aio_show() to aioShow(); added comment that arg unused.
  8. 01d,01feb94,dvs  documentation changes.
  9. 01c,26jan94,kdl  changed comment to refer to ioQLib.h, not ioQPxLib.h.
  10. 01b,12jan94,kdl  general cleanup.
  11. 01a,04apr93,elh  written.
  12. */
  13. /* 
  14. DESCRIPTION
  15. This library implements the show routine for aioPxLib. 
  16. */
  17. /* includes */
  18. #include "vxWorks.h"
  19. #include "aio.h"
  20. #include "stdio.h"
  21. /*****************************************************************************
  22. * aioShow - show AIO requests 
  23. *
  24. * This routine displays the outstanding AIO requests.
  25. *
  26. * CAVEAT
  27. * The <drvNum> parameter is not currently used.
  28. *
  29. * RETURNS: OK, always.
  30. */
  31. STATUS aioShow
  32.     (
  33.     int  drvNum /* drv num to show (IGNORED) */
  34.     )
  35.     {
  36.     int ix; /* index */
  37.     AIO_SYS * pReq; /* AIO request */
  38.     DL_NODE * pNode; /* fd node */
  39.     AIO_FD_ENTRY * pEntry; /* FD_ENTRY */
  40. /* defined aioPxLibP.h */
  41.     LOCAL char *  states [] = {"free", "completed", "ready", 
  42.      "queued", "wait", "running"};
  43. /*  defined in ioQLib.h */
  44.     LOCAL char *  ops []    = {"READ", "WRITE", "SYNC"};
  45.     printf ("  aiocb   fd   op      state    prio  return     errorn");
  46.     printf ("--------  --  -----  ---------  ----  ------  ----------n");
  47.    
  48.     for (ix = 0; ix < maxFiles; ix++)
  49. {
  50. if ((pEntry = aioEntryFind (ix)) == NULL)
  51.     continue;
  52.         semTake (&pEntry->ioQSem, WAIT_FOREVER);
  53. for (pNode = DLL_FIRST (&pEntry->ioQ); pNode != NULL; 
  54.      pNode = DLL_NEXT (pNode))
  55.     {
  56.     pReq = FD_NODE_TO_SYS (pNode);
  57.             printf ("%#10x  %2d  %5s  %9s  %4d  ", (int) pReq->pAiocb, 
  58.     pReq->pAiocb->aio_fildes, ops [pReq->ioNode.op],
  59.     states [pReq->state], ((IO_NODE *) pReq)->prio);
  60.     if (pReq->state == AIO_COMPLETED)
  61. printf ("%6d %#10x", pReq->ioNode.retVal, 
  62. pReq->ioNode.errorVal);
  63.     printf ("n");
  64.     }
  65.         semGive (&pEntry->ioQSem);
  66. }
  67.     printf ("n");
  68.     return (OK);
  69.     }
  70. /*****************************************************************************
  71. * aioVerboseEnbable - enable debugging/verbose mode. 
  72. * RETURNS: OK
  73. * NOMANUAL
  74. */
  75. int aioVerboseEnable ()
  76.     {
  77.     aioPrintRtn = (FUNCPTR) printf;
  78.     return (OK);
  79.     }