GNU/Hurd: retry EINTR returns from pipe I/O
[exim.git] / src / src / osfunctions.h
1 /*************************************************
2 *     Exim - an Internet mail transport agent    *
3 *************************************************/
4
5 /* Copyright (c) University of Cambridge 1995 - 2016 */
6 /* Copyright (c) The Exim Maintainers 2019 */
7 /* See the file NOTICE for conditions of use and distribution. */
8
9 /* Prototypes for os-specific functions. For utilities, we don't need the one
10 that uses a type that isn't defined for them. */
11
12 #ifndef COMPILE_UTILITY
13 extern ip_address_item *os_common_find_running_interfaces(void);
14 #endif
15
16 /* If these exist as a macro, then they're overridden away from us and we
17 rely upon the system headers to provide prototype declarations for us.
18 Notably, strsignal() is not in the Single Unix Specification (v3) and
19 predicting constness is awkward. */
20
21 #ifndef os_getloadavg
22  extern int           os_getloadavg(void);
23 #endif
24 #ifndef os_restarting_signal
25  extern void          os_restarting_signal(int, void (*)(int));
26 #endif
27 #ifndef os_non_restarting_signal
28  extern void          os_non_restarting_signal(int, void (*)(int));
29 #endif
30 #ifndef os_strexit
31  extern const char   *os_strexit(int);     /* char to match os_strsignal */
32 #endif
33 #ifndef os_strsignal
34  extern const char   *os_strsignal(int);   /* char to match strsignal in some OS */
35 #endif
36 #ifndef os_unsetenv
37  extern int           os_unsetenv(const uschar *);
38 #endif
39 #ifndef os_getcwd
40  extern uschar       *os_getcwd(uschar *, size_t);
41 #endif
42
43 #ifdef OS_PIPE_RW_EINTR
44  extern ssize_t os_pipe_read(int fd, void * buf, size_t count);
45  extern ssize_t os_pipe_write(int fd, void * buf, size_t count);
46  extern ssize_t os_pipe_writev(int fd, const struct iovec * iov, int iovcnt);
47 #else
48 # define os_pipe_read(fd, buf, count) read(fd, buf, count)
49 # define os_pipe_write(fd, buf, count) write(fd, buf, count)
50 # define os_pipe_writev(fd, buf, count) writev(fd, buf, count)
51 #endif
52
53 /* End of osfunctions.h */