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