Add missing zstd.h to coregrind Makefile.am noinst_HEADERS
[valgrind.git] / memcheck / tests / darwin / aio.c
blob044aa8dc1ef4aef281b104528b3a1cbd96fbe5e5
1 #include <assert.h>
2 #include <aio.h>
3 #include <fcntl.h>
4 #include <stdio.h>
5 #include <string.h>
6 #include <unistd.h>
7 int x;
9 int main(void)
11 #define LEN 10
12 char buf[LEN];
14 struct aiocb a;
15 struct sigevent s;
17 memset(&a, 0, sizeof(struct aiocb));
18 // Not sure if the sigevent is even looked at by aio_*... just zero it.
19 memset(&s, 0, sizeof(struct sigevent));
21 a.aio_fildes = -1;
22 a.aio_offset = 0;
23 a.aio_buf = NULL;
24 a.aio_nbytes = LEN;
25 a.aio_reqprio = 0;
26 a.aio_sigevent = s;
27 a.aio_lio_opcode = 0; // ignored
29 //------------------------------------------------------------------------
30 // The cases where aiocbp itself points to bogus memory is handled in
31 // memcheck/tests/darwin/scalar.c, so we don't check that here.
33 //------------------------------------------------------------------------
34 // XXX: This causes an unexpected undef value error later, at the XXX mark.
35 // Not sure why, it shouldn't.
36 // assert( aio_return(&a) < 0); // (aiocbp hasn't been inited)
38 //------------------------------------------------------------------------
39 assert( aio_read(&a) < 0); // invalid fd
41 //------------------------------------------------------------------------
42 a.aio_fildes = open("aio.c", O_RDONLY);
43 assert(a.aio_fildes >= 0);
45 assert( aio_read(&a) < 0); // unaddressable aio_buf
47 //------------------------------------------------------------------------
48 a.aio_buf = buf;
50 assert( aio_read(&a) == 0 );
52 assert( aio_read(&a) < 0 ); // (don't crash on the repeated &a)
54 while (0 != aio_error(&a)) { }
56 if (buf[0] == buf[9]) x++; // undefined -- aio_return() not called yet
58 assert( aio_return(&a) > 0 ); // XXX: (undefined value error here)
60 if (buf[0] == buf[9]) x++;
62 assert( aio_return(&a) < 0 ); // (repeated aio_return(); fails because
63 // Valgrind can't find &a in the table)
65 //------------------------------------------------------------------------
66 a.aio_buf = 0;
67 a.aio_fildes = creat("mytmpfile", S_IRUSR|S_IWUSR);
68 assert(a.aio_fildes >= 0);
70 assert( aio_write(&a) < 0); // unaddressable aio_buf
72 //------------------------------------------------------------------------
73 a.aio_buf = buf;
75 assert( aio_write(&a) == 0 );
77 assert( aio_write(&a) < 0 ); // (don't crash on the repeated &a)
79 while (0 != aio_error(&a)) { }
81 assert( aio_return(&a) > 0 );
83 assert( aio_return(&a) < 0 ); // (repeated aio_return(); fails because
84 // Valgrind can't find &a in the table)
86 unlink("mytmpfile");
88 return x;