diff options
author | Dmitry V. Levin <ldv@altlinux.org> | 2018-06-01 01:46:06 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2018-06-01 01:46:06 +0000 |
commit | 3160ea8999f553544c34f0991223f08c01fe59b9 (patch) | |
tree | 3ee62ade869cdee53fc90f0b64f9493b79c74adb /tests/fcntl.c | |
parent | da78779d37e5805dc4b2629c11c953f552bf2258 (diff) | |
download | strace-3160ea8999f553544c34f0991223f08c01fe59b9.tar.gz |
tests: move F_OWNER_* tests to fcntl-common.c
This change enables F_OWNER_* tests for fcntl64 as well.
* tests/fcntl.c: Move main, [TEST_FLOCK64_EINVAL],
and [TEST_F_OWNER_EX] ...
* tests/fcntl-common.c: ... here.
(test_flock64): New prototype.
* tests/fcntl64.c (main): Remove.
Diffstat (limited to 'tests/fcntl.c')
-rw-r--r-- | tests/fcntl.c | 96 |
1 files changed, 6 insertions, 90 deletions
diff --git a/tests/fcntl.c b/tests/fcntl.c index 157576947..9f39a8ff7 100644 --- a/tests/fcntl.c +++ b/tests/fcntl.c @@ -35,8 +35,6 @@ # define TEST_SYSCALL_STR "fcntl" # include "fcntl-common.c" -# define TEST_FLOCK64_EINVAL(cmd) test_flock64_einval(cmd, #cmd) - static void test_flock64_einval(const int cmd, const char *name) { @@ -57,98 +55,16 @@ test_flock64(void) * F_[GS]ETOWN_EX had conflicting values with F_[GS]ETLK64 * in kernel revisions v2.6.32-rc1~96..v2.6.32-rc7~23. */ -#if !defined(F_GETOWN_EX) || F_GETOWN_EX != F_SETLK64 +# if !defined(F_GETOWN_EX) || F_GETOWN_EX != F_SETLK64 TEST_FLOCK64_EINVAL(F_SETLK64); -#endif +# endif /* F_GETLK and F_SETLKW64 have conflicting values on mips64 */ -#if !defined(__mips64) || F_GETLK != F_SETLKW64 +# if !defined(__mips64) || F_GETLK != F_SETLKW64 TEST_FLOCK64_EINVAL(F_SETLKW64); -#endif -#if !defined(F_SETOWN_EX) || F_SETOWN_EX != F_GETLK64 +# endif +# if !defined(F_SETOWN_EX) || F_SETOWN_EX != F_GETLK64 TEST_FLOCK64_EINVAL(F_GETLK64); -#endif -} - -/* - * F_[GS]ETOWN_EX had conflicting values with F_[SG]ETLK64 - * in kernel revisions v2.6.32-rc1~96..v2.6.32-rc7~23. - */ -#undef TEST_F_OWNER_EX -#if defined F_GETOWN_EX && defined F_SETOWN_EX \ - && (F_GETOWN_EX != F_SETLK64) && (F_SETOWN_EX != F_GETLK64) -# define TEST_F_OWNER_EX -#endif - -#ifdef TEST_F_OWNER_EX -# include "f_owner_ex.h" - -static long -test_f_owner_ex_type_pid(const int cmd, const char *const cmd_name, - const int type, const char *const type_name, - pid_t pid) -{ - TAIL_ALLOC_OBJECT_CONST_PTR(struct_kernel_f_owner_ex, fo); - - fo->type = type; - fo->pid = pid; - long rc = invoke_test_syscall(cmd, fo); - printf("%s(0, %s, {type=%s, pid=%d}) = %s\n", - TEST_SYSCALL_STR, cmd_name, type_name, fo->pid, sprintrc(rc)); - - void *bad_addr = (void *) fo + 1; - long rc_efault = invoke_test_syscall(cmd, bad_addr); - printf("%s(0, %s, %p) = %s\n", - TEST_SYSCALL_STR, cmd_name, bad_addr, sprintrc(rc_efault)); - - return rc; -} - -static void -test_f_owner_ex_umove_or_printaddr(const int type, const char *const type_name, - pid_t pid) -{ - long rc = test_f_owner_ex_type_pid(ARG_STR(F_SETOWN_EX), - type, type_name, pid); - if (!rc) - test_f_owner_ex_type_pid(ARG_STR(F_GETOWN_EX), - type, type_name, pid); -} - -static void -test_f_owner_ex(void) -{ - static const struct { - int type; - const char *type_name; - pid_t pid[2]; - } a[] = { - { ARG_STR(F_OWNER_TID), { 1234567890, 20 } }, - { ARG_STR(F_OWNER_PID), { 1298126790, 30 } }, - { ARG_STR(F_OWNER_PGRP), { 1294567890, 40 } } - }; - - for (unsigned int i = 0; i < ARRAY_SIZE(a); i++) { - for (unsigned int j = 0; j < ARRAY_SIZE(a[0].pid); j++) { - test_f_owner_ex_umove_or_printaddr(a[i].type, - a[i].type_name, - a[i].pid[j]); - } - } -} -#endif /* TEST_F_OWNER_EX */ - -int -main(void) -{ - create_sample(); - test_flock(); - test_flock64(); -#ifdef TEST_F_OWNER_EX - test_f_owner_ex(); -#endif - - puts("+++ exited with 0 +++"); - return 0; +# endif } #else |