1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
/*
* Check decoding of semtimedop ipc call.
*
* Copyright (c) 2020-2021 The strace developers.
* All rights reserved.
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "tests.h"
#include "scno.h"
#if defined __NR_ipc && !defined __ARM_EABI__
# define SYSCALL_NAME "semtimedop"
# if SIZEOF_LONG > 4
# define semtimedop_timespec_t kernel_timespec64_t
# else
# define semtimedop_timespec_t kernel_timespec32_t
# endif
# include "semtimedop-common.c"
# define XLAT_MACROS_ONLY
# include "xlat/ipccalls.h"
# undef XLAT_MACROS_ONLY
static long
k_semtimedop_imp(const kernel_ulong_t semid,
const kernel_ulong_t sops,
const kernel_ulong_t nsops,
const kernel_ulong_t timeout)
{
static const kernel_ulong_t bad =
(kernel_ulong_t) 0xbadc0dedbadc0dedULL;
static const kernel_ulong_t call =
(kernel_ulong_t) 0xdefaced00000000ULL | SEMTIMEDOP;
# if defined __s390x__ || defined __s390__
return syscall(__NR_ipc, call, semid, nsops, timeout, sops, bad);
# else
return syscall(__NR_ipc, call, semid, nsops, bad, sops, timeout);
# endif
}
#else
SKIP_MAIN_UNDEFINED("__NR_ipc && !__ARM_EABI__")
#endif
|