-
Notifications
You must be signed in to change notification settings - Fork 771
/
Copy pathaiocb.h
142 lines (124 loc) · 4.17 KB
/
aiocb.h
1
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2014 Garrett D'Amore <[email protected]>
*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_AIOCB_H
#define _SYS_AIOCB_H
#include <sys/types.h>
#include <sys/fcntl.h>
#include <sys/siginfo.h>
#include <sys/aio.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct aiocb {
int aio_fildes;
volatile void *aio_buf; /* buffer location */
size_t aio_nbytes; /* length of transfer */
off_t aio_offset; /* file offset */
int aio_reqprio; /* request priority offset */
struct sigevent aio_sigevent; /* notification type */
int aio_lio_opcode; /* listio operation */
aio_result_t aio_resultp; /* results */
int aio_state; /* state flag for List I/O */
int aio__pad[1]; /* extension padding */
} aiocb_t;
#ifdef _LARGEFILE64_SOURCE
#if !defined(_KERNEL)
typedef struct aiocb64 {
int aio_fildes;
volatile void *aio_buf; /* buffer location */
size_t aio_nbytes; /* length of transfer */
off64_t aio_offset; /* file offset */
int aio_reqprio; /* request priority offset */
struct sigevent aio_sigevent; /* notification type */
int aio_lio_opcode; /* listio operation */
aio_result_t aio_resultp; /* results */
int aio_state; /* state flag for List I/O */
int aio__pad[1]; /* extension padding */
} aiocb64_t;
#else
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
#pragma pack(4)
#endif
typedef struct aiocb64_32 {
int aio_fildes;
caddr32_t aio_buf; /* buffer location */
uint32_t aio_nbytes; /* length of transfer */
off64_t aio_offset; /* file offset */
int aio_reqprio; /* request priority offset */
struct sigevent32 aio_sigevent; /* notification type */
int aio_lio_opcode; /* listio operation */
aio_result32_t aio_resultp; /* results */
int aio_state; /* state flag for List I/O */
int aio__pad[1]; /* extension padding */
} aiocb64_32_t;
#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
#pragma pack()
#endif
#endif /* !defined(_KERNEL) */
#endif /* _LARGEFILE64_SOURCE */
#ifdef _SYSCALL32
typedef struct aiocb32 {
int aio_fildes;
caddr32_t aio_buf; /* buffer location */
uint32_t aio_nbytes; /* length of transfer */
uint32_t aio_offset; /* file offset */
int aio_reqprio; /* request priority offset */
struct sigevent32 aio_sigevent; /* notification type */
int aio_lio_opcode; /* listio operation */
aio_result32_t aio_resultp; /* results */
int aio_state; /* state flag for List I/O */
int aio__pad[1]; /* extension padding */
} aiocb32_t;
#endif /* _SYSCALL32 */
/*
* return values for aiocancel()
*/
#define AIO_CANCELED 0
#define AIO_ALLDONE 1
#define AIO_NOTCANCELED 2
/*
* mode values for lio_listio()
*/
#define LIO_NOWAIT 0
#define LIO_WAIT 1
/*
* listio operation codes
*
* LIO_READ and LIO_WRITE were previously defined as FREAD and FWRITE as
* defined in <sys/file.h>. However, inclusion of <sys/file.h> results
* in X/Open namespace pollution and as such is no longer included in
* this header. The values of LIO_READ and LIO_WRITE must be identical
* to the values of FREAD and FWRITE in <sys/file.h>. Any change to one
* will require a change to the other.
*/
#define LIO_NOP 0
#define LIO_READ 0x01 /* Must match value of FREAD in sys/file.h */
#define LIO_WRITE 0x02 /* Must match value of FWRITE in sys/file.h */
#ifdef __cplusplus
}
#endif
#endif /* _SYS_AIOCB_H */