Blame view

include/linux/aio_abi.h 2.99 KB
f30c22695   Uwe Zeisberger   fix file specific...
1
  /* include/linux/aio_abi.h
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
   *
   * Copyright 2000,2001,2002 Red Hat.
   *
   * Written by Benjamin LaHaise <bcrl@kvack.org>
   *
   * Distribute under the terms of the GPLv2 (see ../../COPYING) or under 
   * the following terms.
   *
   * Permission to use, copy, modify, and distribute this software and its
   * documentation is hereby granted, provided that the above copyright
   * notice appears in all copies.  This software is provided without any
   * warranty, express or implied.  Red Hat makes no representations about
   * the suitability of this software for any purpose.
   *
   * IN NO EVENT SHALL RED HAT BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
   * SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
   * THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RED HAT HAS BEEN ADVISED
   * OF THE POSSIBILITY OF SUCH DAMAGE.
   *
   * RED HAT DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   * PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
   * RED HAT HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
   * ENHANCEMENTS, OR MODIFICATIONS.
   */
  #ifndef __LINUX__AIO_ABI_H
  #define __LINUX__AIO_ABI_H
bd247b348   Jaswinder Singh Rajput   headers_check fix...
29
  #include <linux/types.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
30
31
32
33
34
35
36
37
38
39
40
41
42
43
  #include <asm/byteorder.h>
  
  typedef unsigned long	aio_context_t;
  
  enum {
  	IOCB_CMD_PREAD = 0,
  	IOCB_CMD_PWRITE = 1,
  	IOCB_CMD_FSYNC = 2,
  	IOCB_CMD_FDSYNC = 3,
  	/* These two are experimental.
  	 * IOCB_CMD_PREADX = 4,
  	 * IOCB_CMD_POLL = 5,
  	 */
  	IOCB_CMD_NOOP = 6,
eed4e51fb   Badari Pulavarty   [PATCH] Add vecto...
44
45
  	IOCB_CMD_PREADV = 7,
  	IOCB_CMD_PWRITEV = 8,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
46
  };
9c3060bed   Davide Libenzi   signal/timer/even...
47
48
49
50
51
52
53
  /*
   * Valid flags for the "aio_flags" member of the "struct iocb".
   *
   * IOCB_FLAG_RESFD - Set if the "aio_resfd" member of the "struct iocb"
   *                   is valid.
   */
  #define IOCB_FLAG_RESFD		(1 << 0)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
  /* read() from /dev/aio returns these structures. */
  struct io_event {
  	__u64		data;		/* the data field from the iocb */
  	__u64		obj;		/* what iocb this event came from */
  	__s64		res;		/* result code for this event */
  	__s64		res2;		/* secondary result */
  };
  
  #if defined(__LITTLE_ENDIAN)
  #define PADDED(x,y)	x, y
  #elif defined(__BIG_ENDIAN)
  #define PADDED(x,y)	y, x
  #else
  #error edit for your odd byteorder.
  #endif
  
  /*
   * we always use a 64bit off_t when communicating
   * with userland.  its up to libraries to do the
   * proper padding and aio_error abstraction
   */
  
  struct iocb {
  	/* these are internal to the kernel/libc. */
  	__u64	aio_data;	/* data to be returned in event's data */
  	__u32	PADDED(aio_key, aio_reserved1);
  				/* the kernel sets aio_key to the req # */
  
  	/* common fields */
  	__u16	aio_lio_opcode;	/* see IOCB_CMD_ above */
  	__s16	aio_reqprio;
  	__u32	aio_fildes;
  
  	__u64	aio_buf;
  	__u64	aio_nbytes;
  	__s64	aio_offset;
  
  	/* extra parameters */
  	__u64	aio_reserved2;	/* TODO: use this for a (struct sigevent *) */
9c3060bed   Davide Libenzi   signal/timer/even...
93
94
95
96
97
98
99
100
101
  
  	/* flags for the "struct iocb" */
  	__u32	aio_flags;
  
  	/*
  	 * if the IOCB_FLAG_RESFD flag of "aio_flags" is set, this is an
  	 * eventfd to signal AIO readiness to
  	 */
  	__u32	aio_resfd;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
102
103
104
105
106
107
  }; /* 64 bytes */
  
  #undef IFBIG
  #undef IFLITTLE
  
  #endif /* __LINUX__AIO_ABI_H */