cb.aio_offset = 0;
do_test (int argc, char *argv[]){  char name[] = "/tmp/aio3.XXXXXX";  int fd;  struct aiocb *arr[1];  struct aiocb cb;  static const char buf[] = "Hello World\n";  fd = mkstemp (name);  if (fd == -1)    {      printf ("cannot open temp name: %m\n");      return 1;    }  unlink (name);  arr[0] = &cb;  cb.aio_fildes = fd;  cb.aio_lio_opcode = LIO_WRITE;  cb.aio_reqprio = 0;  cb.aio_buf = (void *) buf;  cb.aio_nbytes = sizeof (buf) - 1;  cb.aio_sigevent.sigev_notify = SIGEV_THREAD;  cb.aio_sigevent.sigev_notify_function = thrfct;  cb.aio_sigevent.sigev_notify_attributes = NULL;  cb.aio_sigevent.sigev_value.sival_ptr = NULL;  if (lio_listio (LIO_NOWAIT, arr, 1, NULL) < 0)    {      printf ("lio_listio failed: %m\n");      return 1;    }  if (aio_suspend ((const struct aiocb *const *) arr, 1, NULL) < 0)    {      printf ("aio_suspend failed: %m\n");      return 1;    }  if (flag != 0)    {      puts ("thread created, should not have happened");      return 1;    }  puts ("all OK");  return 0;}