1 /* 2 * Copyright © 2012 Collabora, Ltd. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining 5 * a copy of this software and associated documentation files (the 6 * "Software"), to deal in the Software without restriction, including 7 * without limitation the rights to use, copy, modify, merge, publish, 8 * distribute, sublicense, and/or sell copies of the Software, and to 9 * permit persons to whom the Software is furnished to do so, subject to 10 * the following conditions: 11 * 12 * The above copyright notice and this permission notice (including the 13 * next paragraph) shall be included in all copies or substantial 14 * portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 20 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 21 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 * SOFTWARE. 24 */ 25 26 #ifndef OS_COMPATIBILITY_H 27 #define OS_COMPATIBILITY_H 28 29 #include "config.h" 30 31 #include <sys/types.h> 32 33 int 34 os_fd_set_cloexec(int fd); 35 36 int 37 os_socketpair_cloexec(int domain, int type, int protocol, int *sv); 38 39 int 40 os_epoll_create_cloexec(void); 41 42 int 43 os_create_anonymous_file(off_t size); 44 45 #ifndef HAVE_STRCHRNUL 46 char * 47 strchrnul(const char *s, int c); 48 #endif 49 50 struct ro_anonymous_file; 51 52 enum ro_anonymous_file_mapmode { 53 RO_ANONYMOUS_FILE_MAPMODE_PRIVATE, 54 RO_ANONYMOUS_FILE_MAPMODE_SHARED, 55 }; 56 57 struct ro_anonymous_file * 58 os_ro_anonymous_file_create(size_t size, 59 const char *data); 60 61 void 62 os_ro_anonymous_file_destroy(struct ro_anonymous_file *file); 63 64 size_t 65 os_ro_anonymous_file_size(struct ro_anonymous_file *file); 66 67 int 68 os_ro_anonymous_file_get_fd(struct ro_anonymous_file *file, 69 enum ro_anonymous_file_mapmode mapmode); 70 71 int 72 os_ro_anonymous_file_put_fd(int fd); 73 74 #endif /* OS_COMPATIBILITY_H */ 75