(root)/
glibc-2.38/
support/
xunistd.h
       1  /* POSIX-specific extra functions.
       2     Copyright (C) 2016-2023 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  /* These wrapper functions use POSIX types and therefore cannot be
      20     declared in <support/support.h>.  */
      21  
      22  #ifndef SUPPORT_XUNISTD_H
      23  #define SUPPORT_XUNISTD_H
      24  
      25  #include <sys/cdefs.h>
      26  #include <sys/types.h>
      27  #include <sys/stat.h>
      28  #include <unistd.h>
      29  
      30  __BEGIN_DECLS
      31  
      32  struct stat64;
      33  
      34  pid_t xfork (void);
      35  pid_t xwaitpid (pid_t, int *status, int flags);
      36  void xpipe (int[2]);
      37  void xdup2 (int, int);
      38  int xopen (const char *path, int flags, mode_t);
      39  #ifndef __USE_TIME_BITS64
      40  # ifdef __USE_FILE_OFFSET64
      41  void xstat (const char *path, struct stat *);
      42  void xlstat (const char *path, struct stat *);
      43  void xfstat (int fd, struct stat *);
      44  # else
      45  void xstat (const char *path, struct stat64 *);
      46  void xlstat (const char *path, struct stat64 *);
      47  void xfstat (int fd, struct stat64 *);
      48  # endif
      49  #else
      50  void __REDIRECT (xstat, (const char *path, struct stat *), xstat_time64);
      51  void __REDIRECT (xlstat, (const char *path, struct stat *), xlstat_time64);
      52  void __REDIRECT (xfstat, (int fd, struct stat *), xfstat_time64);
      53  #endif
      54  void xmkdir (const char *path, mode_t);
      55  void xchroot (const char *path);
      56  void xunlink (const char *path);
      57  long xsysconf (int name);
      58  long long xlseek (int fd, long long offset, int whence);
      59  void xftruncate (int fd, long long length);
      60  void xsymlink (const char *target, const char *linkpath);
      61  void xchdir (const char *path);
      62  void xfchmod (int fd, mode_t mode);
      63  void xchmod (const char *pathname, mode_t mode);
      64  void xmkfifo (const char *pathname, mode_t mode);
      65  
      66  /* Equivalent of "mkdir -p".  */
      67  void xmkdirp (const char *, mode_t);
      68  
      69  /* Read the link at PATH.  The caller should free the returned string
      70     with free.  */
      71  char *xreadlink (const char *path);
      72  
      73  /* Close the file descriptor.  Ignore EINTR errors, but terminate the
      74     process on other errors.  */
      75  void xclose (int);
      76  
      77  /* Write the buffer.  Retry on short writes.  */
      78  void xwrite (int, const void *, size_t);
      79  
      80  /* Read to buffer.  Retry on short reads.  */
      81  void xread (int, void *, size_t);
      82  
      83  /* Invoke mmap with a zero file offset.  */
      84  void *xmmap (void *addr, size_t length, int prot, int flags, int fd);
      85  void xmprotect (void *addr, size_t length, int prot);
      86  void xmunmap (void *addr, size_t length);
      87  
      88  ssize_t xcopy_file_range(int fd_in, loff_t *off_in, int fd_out,
      89  			 loff_t *off_out, size_t len, unsigned int flags);
      90  
      91  __END_DECLS
      92  
      93  #endif /* SUPPORT_XUNISTD_H */