Pyrogenesis
HEAD
Pyrogenesis, a RTS Engine
posix_aio.h
Go to the documentation of this file.
1
/* Copyright (C) 2012 Wildfire Games.
2
*
3
* Permission is hereby granted, free of charge, to any person obtaining
4
* a copy of this software and associated documentation files (the
5
* "Software"), to deal in the Software without restriction, including
6
* without limitation the rights to use, copy, modify, merge, publish,
7
* distribute, sublicense, and/or sell copies of the Software, and to
8
* permit persons to whom the Software is furnished to do so, subject to
9
* the following conditions:
10
*
11
* The above copyright notice and this permission notice shall be included
12
* in all copies or substantial portions of the Software.
13
*
14
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
*/
22
23
#ifndef INCLUDED_POSIX_AIO
24
#define INCLUDED_POSIX_AIO
25
26
// despite the comment in wposix.h about not using Windows headers for
27
// POSIX declarations, this one is harmless (no incompatible declarations)
28
// and can safely be used on Windows as well.
29
#include <fcntl.h>
30
31
#if OS_WIN
32
# include "
lib/sysdep/os/win/wposix/waio.h
"
33
#elif OS_ANDROID || OS_OPENBSD
34
// Android doesn't provide aio.h. We don't actually use aio on Linuxes (see
35
// CONFIG2_FILE_ENABLE_AIO) but we use its symbols and structs, so define
36
// them here
37
# if OS_OPENBSD
38
// OpenBSD 5.1 (latest version at time of writing) has no struct sigevent defined,
39
// so we do this here.
40
struct
sigevent
41
{
42
int
sigev_notify
;
43
int
sigev_signo
;
44
union
sigval
sigev_value
;
45
void (*
sigev_notify_function
)(
union
sigval
);
46
pthread_attr_t *sigev_notify_attributes;
47
};
48
# endif
49
# define LIO_READ 0
50
# define LIO_WRITE 1
51
# define LIO_NOP 2
52
struct
aiocb
53
{
54
int
aio_fildes
;
55
off_t
aio_offset
;
56
volatile
void
*
aio_buf
;
57
size_t
aio_nbytes
;
58
int
aio_reqprio
;
59
struct
sigevent
aio_sigevent
;
60
int
aio_lio_opcode
;
61
};
62
#else
63
# include <aio.h>
64
#endif
65
66
#include "
lib/posix/posix_errno.h
"
// for user convenience
67
68
#endif
// #ifndef INCLUDED_POSIX_AIO
posix_errno.h
aiocb
Definition:
waio.h:64
aiocb::aio_offset
off_t aio_offset
Definition:
waio.h:66
aiocb::aio_buf
volatile void * aio_buf
Definition:
waio.h:67
aiocb::aio_nbytes
size_t aio_nbytes
Definition:
waio.h:68
aiocb::aio_sigevent
struct sigevent aio_sigevent
Definition:
waio.h:70
aiocb::aio_reqprio
int aio_reqprio
Definition:
waio.h:69
aiocb::aio_lio_opcode
int aio_lio_opcode
Definition:
waio.h:71
aiocb::aio_fildes
int aio_fildes
Definition:
waio.h:65
sigevent
Definition:
waio.h:51
sigevent::sigev_notify_function
void(* sigev_notify_function)(union sigval)
Definition:
waio.h:55
sigevent::sigev_signo
int sigev_signo
Definition:
waio.h:53
sigevent::sigev_value
union sigval sigev_value
Definition:
waio.h:54
sigevent::sigev_notify
int sigev_notify
Definition:
waio.h:52
sigval
Definition:
waio.h:45
waio.h
off_t
__int64 off_t
Definition:
wposix_types.h:91
source
lib
posix
posix_aio.h
Generated by
1.9.4