1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "../../memcheck.h"
2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "scalar.h"
3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <unistd.h>
4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <sched.h>
5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <signal.h>
6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <sys/shm.h>
7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// See memcheck/tests/x86-linux/scalar.c for an explanation of what this test
9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// is doing.
10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownint main(void)
12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // uninitialised, but we know px[0] is 0x0
14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   long* px  = malloc(sizeof(long));
15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   long  x0  = px[0];
16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   long  res;
17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   VALGRIND_MAKE_MEM_NOACCESS(0, 0x1000);
19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // The nocancel syscalls all use the same wrappers as the corresponding
21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // non-nocancel syscall.  This means that if we try to test both in the
22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // same file, the nocancel ones won't result in errors being generated
23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // because errors are too similar.  So we test them in this separate file.
24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_read_nocancel 396
26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_write_nocancel 397
27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_open_nocancel 398
28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_close_nocancel 399
29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_wait4_nocancel 400
30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_recvmsg_nocancel 401
31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_sendmsg_nocancel 402
32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_recvfrom_nocancel 403
33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_accept_nocancel 404
34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_msync_nocancel 405
35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_fcntl_nocancel 406
36ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_select_nocancel 407
37ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_fsync_nocancel 408
38ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_connect_nocancel 409
39ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_sigsuspend_nocancel 410
40ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_readv_nocancel 411
41ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_writev_nocancel 412
42ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_sendto_nocancel 413
43ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_pread_nocancel 414
44ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_pwrite_nocancel 415
45ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_waitid_nocancel 416
46ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_poll_nocancel 417
47ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_msgsnd_nocancel 418
48ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_msgrcv_nocancel 419
49ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
50ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // The error doesn't appear because it's a dup of the one from sem_wait.
51ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   GO(__NR_sem_wait_nocancel, 420, "1s 0m");
52ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   SY(__NR_sem_wait_nocancel, x0); FAIL;
53ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
54ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR_aio_suspend_nocancel 421
55ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR___sigwait_nocancel 422
56ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   // __NR___semwait_signal_nocancel 423
57ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
58ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   return 0;
59ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
60ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
61