(root)/
glibc-2.38/
sysdeps/
unix/
sysv/
linux/
s390/
s390-32/
posix_fadvise64.c
       1  /* Copyright (C) 2003-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  #include <errno.h>
      19  #include <fcntl.h>
      20  #include <sysdep.h>
      21  
      22  int __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise);
      23  int __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise);
      24  
      25  /* Advice the system about the expected behaviour of the application with
      26     respect to the file associated with FD.  */
      27  
      28  struct fadvise64_64_layout
      29  {
      30    int fd;
      31    off64_t offset;
      32    off64_t len;
      33    int advise;
      34  };
      35  
      36  int
      37  __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
      38  {
      39    struct fadvise64_64_layout parameters;
      40  
      41    parameters.fd = fd;
      42    parameters.offset = offset;
      43    parameters.len = len;
      44    parameters.advise = advise;
      45    int ret = INTERNAL_SYSCALL_CALL (fadvise64_64, &parameters);
      46    if (!INTERNAL_SYSCALL_ERROR_P (ret))
      47      return 0;
      48    return INTERNAL_SYSCALL_ERRNO (ret);
      49  }
      50  
      51  #include <shlib-compat.h>
      52  
      53  #if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)
      54  
      55  int
      56  attribute_compat_text_section
      57  __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise)
      58  {
      59    return __posix_fadvise64_l64 (fd, offset, len, advise);
      60  }
      61  
      62  versioned_symbol (libc, __posix_fadvise64_l64, posix_fadvise64, GLIBC_2_3_3);
      63  compat_symbol (libc, __posix_fadvise64_l32, posix_fadvise64, GLIBC_2_2);
      64  #else
      65  strong_alias (__posix_fadvise64_l64, posix_fadvise64);
      66  #endif