const unsigned long long pos = 0x7ac5fed6dad7bef8;
const kernel_ulong_t pos_l = (kernel_ulong_t) pos;
long rc;
- int test_dumpio;
+ bool skip_dumpio_test = false;
tprintf("%s", "");
(kernel_ulong_t) (pos >> 32);
rc = syscall(__NR_preadv2, -1, NULL, vlen, pos_l, pos_h, 1);
# endif
- if (rc != -1 || (ENOSYS != errno && EBADF != errno))
- perror_msg_and_fail("preadv2");
- test_dumpio = EBADF == errno;
+ if (rc != -1)
+ error_msg_and_fail("preadv2: expected -1, returned %ld", rc);
+ switch (errno) {
+ case ENOSYS:
+ skip_dumpio_test = true;
+ break;
+ case EBADF:
+ break;
+ default:
+ perror_msg_and_fail("preadv2");
+ }
tprintf("preadv2(-1, NULL, %lu, %lld, RWF_HIPRI) = %s\n",
(unsigned long) vlen, pos, sprintrc(rc));
# else
rc = syscall(__NR_pwritev2, -1, NULL, vlen, pos_l, pos_h, 1);
# endif
- if (rc != -1 || (ENOSYS != errno && EBADF != errno))
- perror_msg_and_fail("pwritev2");
+ if (rc != -1)
+ error_msg_and_fail("pwritev2: expected -1, returned %ld", rc);
+ switch (errno) {
+ case ENOSYS:
+ skip_dumpio_test = true;
+ break;
+ case EBADF:
+ break;
+ default:
+ perror_msg_and_fail("pwritev2");
+ }
tprintf("pwritev2(-1, NULL, %lu, %lld, RWF_HIPRI) = %s\n",
(unsigned long) vlen, pos, sprintrc(rc));
- if (test_dumpio)
+ if (!skip_dumpio_test)
dumpio();
tprintf("%s\n", "+++ exited with 0 +++");