1*84e872a0SLloyd Pique /* 2*84e872a0SLloyd Pique * Copyright © 2012 Collabora, Ltd. 3*84e872a0SLloyd Pique * 4*84e872a0SLloyd Pique * Permission is hereby granted, free of charge, to any person obtaining 5*84e872a0SLloyd Pique * a copy of this software and associated documentation files (the 6*84e872a0SLloyd Pique * "Software"), to deal in the Software without restriction, including 7*84e872a0SLloyd Pique * without limitation the rights to use, copy, modify, merge, publish, 8*84e872a0SLloyd Pique * distribute, sublicense, and/or sell copies of the Software, and to 9*84e872a0SLloyd Pique * permit persons to whom the Software is furnished to do so, subject to 10*84e872a0SLloyd Pique * the following conditions: 11*84e872a0SLloyd Pique * 12*84e872a0SLloyd Pique * The above copyright notice and this permission notice (including the 13*84e872a0SLloyd Pique * next paragraph) shall be included in all copies or substantial 14*84e872a0SLloyd Pique * portions of the Software. 15*84e872a0SLloyd Pique * 16*84e872a0SLloyd Pique * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17*84e872a0SLloyd Pique * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18*84e872a0SLloyd Pique * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19*84e872a0SLloyd Pique * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 20*84e872a0SLloyd Pique * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 21*84e872a0SLloyd Pique * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22*84e872a0SLloyd Pique * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23*84e872a0SLloyd Pique * SOFTWARE. 24*84e872a0SLloyd Pique */ 25*84e872a0SLloyd Pique 26*84e872a0SLloyd Pique #ifndef WAYLAND_OS_H 27*84e872a0SLloyd Pique #define WAYLAND_OS_H 28*84e872a0SLloyd Pique 29*84e872a0SLloyd Pique #include <sys/types.h> 30*84e872a0SLloyd Pique #include <sys/socket.h> 31*84e872a0SLloyd Pique 32*84e872a0SLloyd Pique int 33*84e872a0SLloyd Pique wl_os_socket_cloexec(int domain, int type, int protocol); 34*84e872a0SLloyd Pique 35*84e872a0SLloyd Pique int 36*84e872a0SLloyd Pique wl_os_socket_peercred(int sockfd, uid_t *uid, gid_t *gid, pid_t *pid); 37*84e872a0SLloyd Pique 38*84e872a0SLloyd Pique int 39*84e872a0SLloyd Pique wl_os_dupfd_cloexec(int fd, int minfd); 40*84e872a0SLloyd Pique 41*84e872a0SLloyd Pique ssize_t 42*84e872a0SLloyd Pique wl_os_recvmsg_cloexec(int sockfd, struct msghdr *msg, int flags); 43*84e872a0SLloyd Pique 44*84e872a0SLloyd Pique int 45*84e872a0SLloyd Pique wl_os_epoll_create_cloexec(void); 46*84e872a0SLloyd Pique 47*84e872a0SLloyd Pique int 48*84e872a0SLloyd Pique wl_os_accept_cloexec(int sockfd, struct sockaddr *addr, socklen_t *addrlen); 49*84e872a0SLloyd Pique 50*84e872a0SLloyd Pique void * 51*84e872a0SLloyd Pique wl_os_mremap_maymove(int fd, void *old_data, ssize_t *old_size, 52*84e872a0SLloyd Pique ssize_t new_size, int prot, int flags); 53*84e872a0SLloyd Pique 54*84e872a0SLloyd Pique 55*84e872a0SLloyd Pique /* 56*84e872a0SLloyd Pique * The following are for wayland-os.c and the unit tests. 57*84e872a0SLloyd Pique * Do not use them elsewhere. 58*84e872a0SLloyd Pique */ 59*84e872a0SLloyd Pique 60*84e872a0SLloyd Pique #ifdef __linux__ 61*84e872a0SLloyd Pique 62*84e872a0SLloyd Pique #ifndef SOCK_CLOEXEC 63*84e872a0SLloyd Pique #define SOCK_CLOEXEC 02000000 64*84e872a0SLloyd Pique #endif 65*84e872a0SLloyd Pique 66*84e872a0SLloyd Pique #ifndef F_DUPFD_CLOEXEC 67*84e872a0SLloyd Pique #define F_DUPFD_CLOEXEC 1030 68*84e872a0SLloyd Pique #endif 69*84e872a0SLloyd Pique 70*84e872a0SLloyd Pique #ifndef MSG_CMSG_CLOEXEC 71*84e872a0SLloyd Pique #define MSG_CMSG_CLOEXEC 0x40000000 72*84e872a0SLloyd Pique #endif 73*84e872a0SLloyd Pique 74*84e872a0SLloyd Pique #endif /* __linux__ */ 75*84e872a0SLloyd Pique 76*84e872a0SLloyd Pique #endif 77