7b6797acb04160a9b17fdc038389dfaece9dae5a
[mono.git] / support / sys-sendfile.c
1 /*
2  * <sys/sendfile.h> wrapper functions.
3  *
4  * Authors:
5  *   Jonathan Pryor (jonpryor@vt.edu)
6  *
7  * Copyright (C) 2004 Jonathan Pryor
8  */
9
10 #include <config.h>
11
12 #include <sys/types.h>
13 #include <errno.h>
14
15 #include "map.h"
16 #include "mph.h"
17
18 #ifdef HAVE_SYS_SENDFILE_H
19 #include <sys/sendfile.h>
20 #endif /* ndef HAVE_SYS_SENDFILE_H */
21
22 G_BEGIN_DECLS
23
24 #ifdef HAVE_SENDFILE
25 mph_ssize_t
26 Mono_Posix_Syscall_sendfile (int out_fd, int in_fd, mph_off_t *offset, mph_size_t count)
27 {
28         off_t _offset;
29         ssize_t r;
30         mph_return_if_off_t_overflow (*offset);
31
32         _offset = *offset;
33
34 #if defined(HOST_DARWIN) || defined(HOST_BSD)
35         /* The BSD version has 6 arguments */
36         g_assert_not_reached ();
37 #else
38         r = sendfile (out_fd, in_fd, &_offset, (size_t) count);
39 #endif
40
41         *offset = _offset;
42
43         return r;
44 }
45 #endif /* ndef HAVE_SENDFILE */
46
47 G_END_DECLS
48
49 /*
50  * vim: noexpandtab
51  */