OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems-20020807/] [cpukit/] [posix/] [include/] [aio.h] - Rev 1780

Go to most recent revision | Compare with Previous | Blame | View Log

/* aio.h
 *
 *  aio.h,v 1.5 1999/04/26 18:04:46 joel Exp
 */
 
#ifndef __POSIX_ASYNCHRONOUS_IO_h
#define __POSIX_ASYNCHRONOUS_IO_h
 
#ifdef __cplusplus
extern "C" {
#endif
 
#include <sys/features.h>
 
#if defined(_POSIX_ASYNCHRONOUS_IO)
 
/*
 *  6.7.1 Data Definitions for Asynchronous Input and Output, 
 *        P1003.1b-1993, p. 151
 */
 
#include <sys/types.h>
#include <signal.h>
#include <time.h>
#include <fcntl.h>
 
/*
 *  6.7.1.2 Manifest Constants, P1003.1b-1993, p. 153
 */
 
#define AIO_CANCELED    0 /* all requested operations have been canceled */
#define AIO_NOTCANCELED 1 /* some of the operations could not be canceled */
                          /*   since they are in progress */
#define AIO_ALLDONE     2 /* none of the requested operations could be */
                          /*   canceled since they are already complete */
 
/* lio_listio() options */
 
#define LIO_WAIT        0 /* calling process is to suspend until the */
                          /*   operation is complete */
#define LIO_NOWAIT      1 /* calling process is to continue execution while */
                          /*   the operation is performed and no notification */
                          /*   shall be given when the operation is completed */
#define LIO_READ        2 /* request a read() */
#define LIO_WRITE       3 /* request a write() */
#define LIO_NOP         4 /* no transfer is requested */
 
/*
 *  6.7.1.1 Asynchronous I/O Control Block, P1003.1b-1993, p. 151
 */
 
struct aiocb {
  int             aio_fildes;     /* File descriptor */
  off_t           aio_offset;     /* File offset */
  volatile void  *aio_buf;        /* Location of buffer */
  size_t          aio_nbytes;     /* Length of transfer */
  int             aio_reqprio;    /* Request priority offset */
  struct sigevent aio_sigevent;   /* Signal number and value */
  int             aoi_lio_opcode; /* Operation to be performed */
};
 
/*
 *  6.7.2 Asynchronous Read, P1003.1b-1993, p. 154
 */
 
int aio_read(
  struct aiocb  *aiocbp
);
 
/*
 *  6.7.3 Asynchronous Write, P1003.1b-1993, p. 155
 */
 
int aio_write(
  struct aiocb  *aiocbp
);
 
/*
 *  6.7.4 List Directed I/O, P1003.1b-1993, p. 158
 */
 
int lio_listio(
  int                    mode,
  struct aiocb  * const  list[],
  int                    nent,
  struct sigevent       *sig
);
 
/*
 *  6.7.5 Retrieve Error of Asynchronous I/O Operation, P1003.1b-1993, p. 161
 */
 
int aio_error(
  const struct aiocb  *aiocbp
);
 
/*
 *  6.7.6 Retrieve Return Status of Asynchronous I/O Operation, 
 *        P1003.1b-1993, p. 162
 */
 
int aio_return(
  const struct aiocb  *aiocbp
);
 
/*
 *  6.7.7 Cancel Asynchronous I/O Operation, P1003.1b-1993, p. 163
 */
 
int aio_cancel(
  int            filedes,
  struct aiocb  *aiocbp
);
 
/*
 *  6.7.7 Wait for Asynchronous I/O Request, P1003.1b-1993, p. 164
 */
 
int aio_suspend(
  struct aiocb  * const   list[],
  int                     nent,
  const struct timespec  *timeout
);
 
#if defined(_POSIX_SYNCHRONIZED_IO)
 
/*
 *  6.7.9 Asynchronous File Synchronization, P1003.1b-1993, p. 166
 */
 
int aio_fsync(
  int            op,
  struct aiocb  *aiocbp
);
 
#endif /* _POSIX_SYNCHRONIZED_IO */
 
#endif /* _POSIX_ASYNCHRONOUS_IO */
 
#ifdef __cplusplus
}
#endif
 
#endif
/* end of include file */
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.