(root)/
strace-6.5/
tests-m32/
fadvise64_64.c
       1  /*
       2   * Check decoding of fadvise64_64 syscall.
       3   *
       4   * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
       5   * Copyright (c) 2016 Dmitry V. Levin <ldv@strace.io>
       6   * Copyright (c) 2016-2021 The strace developers.
       7   * All rights reserved.
       8   *
       9   * SPDX-License-Identifier: GPL-2.0-or-later
      10   */
      11  
      12  #include "tests.h"
      13  
      14  #include "scno.h"
      15  
      16  #ifdef __arm__
      17  # ifdef __NR_arm_fadvise64_64
      18  #  undef __NR_fadvise64_64
      19  #  define __NR_fadvise64_64 __NR_arm_fadvise64_64
      20  # endif /* __NR_arm_fadvise64_64 */
      21  #endif /* __arm__ */
      22  
      23  #ifdef __NR_fadvise64_64
      24  
      25  # include "fadvise.h"
      26  
      27  static void
      28  do_fadvise(long fd, long long offset, long long llen, long advice)
      29  {
      30  	long ret;
      31  	const char *errstr;
      32  
      33  # if (LONG_MAX > INT_MAX) \
      34    || (defined __x86_64__ && defined __ILP32__) \
      35    || defined LINUX_MIPSN32
      36  	ret = syscall(__NR_fadvise64_64, fd, offset, llen, advice);
      37  # elif defined __ARM_EABI__ || defined POWERPC || defined XTENSA
      38  	ret = syscall(__NR_fadvise64_64, fd, advice,
      39  		      LL_VAL_TO_PAIR(offset), LL_VAL_TO_PAIR(llen));
      40  # else
      41  	ret = syscall(__NR_fadvise64_64, fd,
      42  		      LL_VAL_TO_PAIR(offset), LL_VAL_TO_PAIR(llen), advice);
      43  # endif
      44  	errstr = sprintrc(ret);
      45  
      46  	printf("fadvise64_64(%d, %lld, %lld, ", (int) fd, offset, llen);
      47  	printxval(advise, (unsigned) advice, "POSIX_FADV_???");
      48  	printf(") = %s\n", errstr);
      49  }
      50  
      51  #else
      52  
      53  SKIP_MAIN_UNDEFINED("__NR_fadvise64_64");
      54  
      55  #endif