cb.aio_offset = 0;
do_test (void){  struct aiocb *arr[1];  struct aiocb cb;  char buf[100];  struct timeval before;  struct timeval after;  struct timespec timeout;  int fd[2];  int result = 0;  if (pipe (fd) != 0)    {      printf ("cannot create pipe: %m\n");      return 1;    }  arr[0] = &cb;  cb.aio_fildes = fd[0];  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_NONE;  /* Try to read from stdin where nothing will be available.  */  if (aio_read (arr[0]) < 0)    {      printf ("aio_read failed: %m\n");      return 1;    }  /* Get the current time.  */  gettimeofday (&before, NULL);  /* Wait for input which is unsuccess and therefore the function will     time out.  */  timeout.tv_sec = 3;  timeout.tv_nsec = 0;  if (aio_suspend ((const struct aiocb *const*) arr, 1, &timeout) != -1)    {      puts ("aio_suspend() didn't return -1");      result = 1;    }  else if (errno != EAGAIN)    {      puts ("error not set to EAGAIN");      result = 1;    }  else    {      gettimeofday (&after, NULL);      if (after.tv_sec < before.tv_sec + 1)	{	  puts ("timeout came too early");	  result = 1;	}    }  return result;}