/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* bos72Q src/bos/usr/ccs/lib/libmio/libmio.h 1.2.1.1                     */
/*                                                                        */
/* Licensed Materials - Property of IBM                                   */
/*                                                                        */
/* COPYRIGHT International Business Machines Corp. 2005,2019              */
/* All Rights Reserved                                                    */
/*                                                                        */
/* US Government Users Restricted Rights - Use, duplication or            */
/* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.      */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
/* @(#)50	1.2.1.1	src/bos/usr/ccs/lib/libmio/libmio.h, libmio, bos72Q, q2019_13A4 2/5/19 03:06:51 */
#if !defined(_MIO_USER_H )
#define _MIO_USER_H 

#if !defined(_LARGE_FILES)
#define _LARGE_FILES
#endif

#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
#include <aio.h>

#ifdef __cplusplus
extern "C" {
#endif

#define MIO_EXTRA_SKIP_MIO_FILES_FLAG   0x2

#define MIO_EXTRA_COOKIE 0x7a78746b
struct mio_extra {
   int   cookie ;
   int   taskid ;
   int64 bufsiz ;
   char *modules ;
   char *logical_name ;
   int   flags ;
   int   extra_errno ;
} ;

#define MIO_EXTRA_FLAG_SCRATCH 0x80000000

#if !defined(MIO_STRUCT_AIOCB)
#define MIO_STRUCT_AIOCB struct aiocb64
#define MIO_STRUCT_LIOCB struct liocb64
#endif

extern int MIO_open64(char *, int, int, struct mio_extra *);
extern int MIO_fstat64( int, struct stat64 *);
extern long long MIO_lseek64( int, int64, int);
extern int MIO_ftruncate64( int, int64);
extern int MIO_read( int, void *, int);
extern int MIO_write( int, void *, int);
extern int MIO_close( int);
extern int MIO_fcntl( int, int, int *);
extern int MIO_ffinfo( int, int, struct diocapbuf *, int);
extern int MIO_fsync( int);
extern int64 MIO_str_to_long( char *);
extern int   MIO_str_to_long_vector(char *, int64*, int);
extern int MIO_aio_read64( int , MIO_STRUCT_AIOCB * ) ;
extern int MIO_aio_write64( int , MIO_STRUCT_AIOCB * ) ;
extern int MIO_aio_suspend64( int , MIO_STRUCT_AIOCB ** ) ;
extern int MIO_aio_nwait64( int , int , MIO_STRUCT_AIOCB ** ) ;
extern int MIO_aio_cancel64( int , MIO_STRUCT_AIOCB * ) ;
extern int MIO_lio_listio64( int , MIO_STRUCT_LIOCB **, int , void *) ;

#if defined(USE_MIO_DEFINES)
#define open64(a,b,c)        MIO_open64(a,b,c,0)
#define close(a)             MIO_close(a)
#define read(a,b,c)          MIO_read(a,b,c)
#define write(a,b,c)         MIO_write(a,b,c)
#define lseek64(a,b,c)       MIO_lseek64(a,b,c)
#define ftruncate64(a,b)     MIO_ftruncate64(a,b)
#define fsync(a)             MIO_fsync(a)
#define fstat64(a,b)         MIO_fstat64(a,b)
#define ffinfo(a,b,c,d)      MIO_ffinfo(a,b,c,d)
#define fcntl(a,b,c)         MIO_fcntl(a,b,c)
#define aio_read64(a,b)      MIO_aio_read64(a,b)
#define aio_write64(a,b)     MIO_aio_write64(a,b)
#define aio_suspend64(a,b)   MIO_aio_suspend64(a,b)
#define aio_nwait64(a,b,c)   MIO_aio_nwait64(a,b,c)
#define aio_cancel64(a,b)    MIO_aio_cancel64(a,b)
#define lio_listio64(a,b,c,d) MIO_lio_listio64(a,b,c,d)
#endif

#ifdef __cplusplus
}
#endif

#endif  /* _MIO_USER_H  */
