aio.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:2k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* aio.h - asynchronous I/O header file */
  2. /* Copyright 1984-1996 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01d,18jul96,dbt  added aioPxLibInit() and aioShow() prototypes (SPR #3227).
  7. 01c,23jan96,tpr  added ; after lio_listio () prototype definition.
  8.  added Copyright line.
  9. 01b,26jan94,kdl  removed prototype for aio_fsync(); minor cleanup.
  10. 01a,04apr93,elh  written.
  11. */
  12. #ifndef __INCaioh
  13. #define __INCaioh
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. /* includes */
  18. #include "sys/types.h"
  19. #include "signal.h"
  20. #include "fcntl.h"
  21. #include "private/aioPxLibP.h"
  22. /* defines */
  23. /* aio_cancel() return values */
  24. #define AIO_CANCELED 1 /* operations canceled */
  25. #define AIO_NOTCANCELED 2 /* operations are in progress */
  26. #define AIO_ALLDONE 3 /* operations complete */
  27. /* lio_listio()  modes */
  28. #define LIO_WAIT 4 /* wait for completion */
  29. #define LIO_NOWAIT 5 /* don't wait for completion */
  30. /* lio_listio() operations */
  31.   /* lio op codes */
  32. #define LIO_READ 0 /* read operation */
  33. #define LIO_WRITE 1 /* write operation */
  34. #define LIO_NOP 2 /* no transfer operation*/
  35. /* Asynchronous I/O control block */
  36. struct aiocb
  37.     {
  38.     int aio_fildes; /* file descriptor */
  39.     off_t aio_offset; /* file offset */
  40.     volatile void * aio_buf; /* location of buffer */
  41.     size_t aio_nbytes; /* length of transfer */ 
  42.     int aio_reqprio; /* request priority offset */
  43.     struct sigevent aio_sigevent; /* signal number and value */
  44.     int aio_lio_opcode; /* operation to be performed */
  45.     /* WRS addition */
  46.     AIO_SYS aio_sys;     /* implementation-specific */
  47.     };
  48. /* forward declarations */
  49. #if defined(__STDC__) || defined(__cplusplus)
  50. extern int    aio_read (struct aiocb *);
  51. extern int  aio_write (struct aiocb *);
  52. extern int  lio_listio (int, struct aiocb * [], int, 
  53.          struct sigevent *);
  54. extern int  aio_error (const struct aiocb *);
  55. extern size_t aio_return (struct aiocb *);
  56. extern int  aio_cancel (int, struct aiocb *);
  57. extern int  aio_suspend (const struct aiocb * [], int , 
  58.              const struct timespec *);
  59. extern STATUS   aioPxLibInit (int lioMax);
  60. extern STATUS   aioShow (int drvNum);
  61. #else /* __STDC__ */
  62. extern int    aio_read ();
  63. extern int  aio_write ();
  64. extern int  lio_listio ();
  65. extern int  aio_error ();
  66. extern size_t aio_return ();
  67. extern int  aio_cancel ();
  68. extern int  aio_suspend ();
  69. extern STATUS   aioPxLibInit ();
  70. extern STATUS   aioShow ();
  71. #endif /* __STDC__ */
  72. #ifdef __cplusplus
  73. }
  74. #endif
  75. #endif /* __INCaioh */