1 /* Uncancelable versions of cancelable interfaces. Hurd version. 2 Copyright (C) 2003-2022 Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 5 The GNU C Library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 The GNU C Library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with the GNU C Library; if not, see 17 <https://www.gnu.org/licenses/>. */ 18 19 #ifndef NOT_CANCEL_H 20 # define NOT_CANCEL_H 21 22 #include <fcntl.h> 23 #include <unistd.h> 24 #include <poll.h> 25 #include <sys/wait.h> 26 #include <time.h> 27 #include <sys/uio.h> 28 #include <hurd.h> 29 #include <hurd/fd.h> 30 31 /* Non cancellable close syscall. */ 32 __typeof (__close) __close_nocancel; 33 34 void __close_nocancel_nostatus (int fd); 35 36 /* Non cancellable open syscall. */ 37 __typeof (__open) __open_nocancel; 38 /* open64 is just the same as open for us. */ 39 #define __open64_nocancel(...) \ 40 __open_nocancel (__VA_ARGS__) 41 42 /* Non cancellable openat syscall. */ 43 __typeof (__openat) __openat_nocancel; 44 /* open64 is just the same as open for us. */ 45 #define __openat64_nocancel(...) \ 46 __openat_nocancel (__VA_ARGS__) 47 48 /* Non cancellable read syscall. */ 49 __typeof (__read) __read_nocancel; 50 51 /* Non cancellable pread syscall (LFS version). */ 52 __typeof (__pread64) __pread64_nocancel; 53 54 /* Non cancellable write syscall. */ 55 __typeof (__write) __write_nocancel; 56 57 /* Non cancellable pwrite syscall (LFS version). */ 58 __typeof (__pwrite64) __pwrite64_nocancel; 59 60 /* Non cancellable writev syscall. */ 61 __typeof (__writev) __writev_nocancel; 62 63 /* Non cancellable writev syscall with no status. */ 64 void __writev_nocancel_nostatus (int fd, const struct iovec *vector, int count); 65 66 /* Non cancellable wait4 syscall. */ 67 __typeof (__wait4) __wait4_nocancel; 68 69 # define __waitpid_nocancel(pid, stat_loc, options) \ 70 __wait4_nocancel (pid, stat_loc, options, NULL) 71 72 /* Non cancellable fcntl syscall. */ 73 __typeof (__fcntl) __fcntl_nocancel; 74 /* fcntl64 is just the same as fcntl for us. */ 75 #define __fcntl64_nocancel(...) \ 76 __fcntl_nocancel (__VA_ARGS__) 77 78 #define __getrandom_nocancel(buf, size, flags) \ 79 __getrandom (buf, size, flags) 80 81 #define __poll_infinity_nocancel(fds, nfds) \ 82 __poll (fds, nfds, -1) 83 84 #if IS_IN (libc) 85 hidden_proto (__close_nocancel) 86 hidden_proto (__close_nocancel_nostatus) 87 hidden_proto (__open_nocancel) 88 hidden_proto (__openat_nocancel) 89 hidden_proto (__read_nocancel) 90 hidden_proto (__pread64_nocancel) 91 hidden_proto (__write_nocancel) 92 hidden_proto (__pwrite64_nocancel) 93 hidden_proto (__writev_nocancel) 94 hidden_proto (__writev_nocancel_nostatus) 95 hidden_proto (__wait4_nocancel) 96 hidden_proto (__fcntl_nocancel) 97 #endif 98 99 #endif /* NOT_CANCEL_H */ 100