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