Example #1
0
void *
POSIX_Init (void *argument)
{
  int result, fd;
  struct aiocb *aiocbp;
  int status;

  rtems_aio_init ();

  status = mkdir ("/tmp", S_IRWXU);
  rtems_test_assert (!status);
  
  fd = open ("/tmp/aio_fildes", O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO);
  rtems_test_assert ( fd != -1);

  TEST_BEGIN();

  puts (" Init: EBADF TESTS ");

  aiocbp = create_aiocb (WRONG_FD);
  status = aio_write (aiocbp);
  rtems_test_assert (status == -1);

  /* Bad file descriptor */
  puts ("Init: aio_write() - EBADF ");

  result = aio_return (aiocbp);
  rtems_test_assert (result == -1);
  status = aio_error (aiocbp);
  rtems_test_assert (status == EBADF);

  status = aio_read (aiocbp);
  rtems_test_assert (status == -1);

  /* Bad file descriptor */
  puts ("Init: aio_read() - EBADF ");

  result = aio_return (aiocbp);
  rtems_test_assert (result == -1);
  status = aio_error (aiocbp);
  rtems_test_assert (status == EBADF);

  status = aio_cancel (WRONG_FD, NULL);
  rtems_test_assert (status == -1);

  /* Bad file descriptor */
  puts ("Init: aio_cancel() - EBADF ");
  
  result = aio_return (aiocbp);
  rtems_test_assert (result == -1);
  status = aio_error (aiocbp);
  rtems_test_assert (status == EBADF);

  status = aio_fsync (O_SYNC, aiocbp);
  rtems_test_assert (status == -1);
  
  /* Bad file descriptor */
  puts ("Init: aio_fsync() - EBADF ");

  result = aio_return (aiocbp);
  rtems_test_assert (result == -1);
  status = aio_error (aiocbp);
  rtems_test_assert (status == EBADF);
  
  free_aiocb (aiocbp);

  /* Invalid offset */
  puts ("Init: aio_write() - EINVAL [aio_offset]");

  aiocbp = create_aiocb (fd);
  aiocbp->aio_offset = -1;
  status = aio_write (aiocbp);
  rtems_test_assert (status == -1);

  result = aio_return (aiocbp);
  rtems_test_assert (result == -1);
  status = aio_error (aiocbp);
  rtems_test_assert (status == EINVAL);

    /* Invalid offset */
  puts ("Init: aio_read() - EINVAL [aio_offset]");

  status = aio_read (aiocbp);
  rtems_test_assert (status == -1);

  result = aio_return (aiocbp);
  rtems_test_assert (result == -1);
  status = aio_error (aiocbp);
  rtems_test_assert (status == EINVAL);

  free_aiocb (aiocbp);

  /* Invalid request priority */
  puts ("Init: aio_write() - EINVAL [aio_reqprio]");

  aiocbp = create_aiocb (fd);
  aiocbp->aio_reqprio = AIO_PRIO_DELTA_MAX + 1;
  status = aio_write (aiocbp);
  rtems_test_assert (status == -1);

  result = aio_return (aiocbp);
  rtems_test_assert (result == -1);
  status = aio_error (aiocbp);
  rtems_test_assert (status == EINVAL);

   /* Invalid request priority */
  puts ("Init: aio_read() - EINVAL [aio_reqprio]");

  status = aio_read (aiocbp);
  rtems_test_assert (status == -1);

  result = aio_return (aiocbp);
  rtems_test_assert (result == -1);
  status = aio_error (aiocbp);
  rtems_test_assert (status == EINVAL);

  /* Invalid request aio_cancel */
  puts ("Init: aio_cancel() - EINVAL ");

  status = aio_cancel (WRONG_FD, aiocbp);
  rtems_test_assert (status == -1);

  result = aio_return (aiocbp);
  rtems_test_assert (result == -1);
  status = aio_error (aiocbp);
  rtems_test_assert (status == EINVAL);

  /* Invalid operation to aio_fsync */
  puts ("Init: aio_fsync() - EINVAL ");
  status = aio_fsync (-1, aiocbp);
  rtems_test_assert (status == -1);

  result = aio_return (aiocbp);
  rtems_test_assert (result == -1);
  status = aio_error (aiocbp);
  rtems_test_assert (status == EINVAL);

  free_aiocb (aiocbp);

  TEST_END();

  close (fd);
  rtems_test_exit (0);

  return NULL;

}
Example #2
0
void *
POSIX_Init (void *argument)
{
  int fd[MAX];
  struct aiocb *aiocbp[MAX+1];
  int status, i, policy = SCHED_FIFO;
  char filename[BUFSIZE];
  struct sched_param param;

  status = rtems_aio_init ();
  rtems_test_assert (status == 0);

  param.sched_priority = 30;
  status = pthread_setschedparam (pthread_self(), policy, &param);
  rtems_test_assert (status == 0);
 
  status = mkdir ("/tmp", S_IRWXU);
  rtems_test_assert (!status);
  
  puts ("\n\n*** POSIX AIO TEST 02 ***");
  
  puts ("Init: Open files");

  for (i=0; i<MAX; i++)
    {
      sprintf (filename, "/tmp/aio_fildes%d",i);
      fd[i] = open (filename, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO);
      rtems_test_assert ( fd[i] != -1);
    }
  
  puts ("Init: [WQ] aio_write on 1st file");
  aiocbp[0] = create_aiocb (fd[0]);
  status = aio_write (aiocbp[0]);
  rtems_test_assert (status != -1);

  puts ("Init: [WQ] aio_write on 2nd file");
  aiocbp[1] = create_aiocb (fd[1]);
  status = aio_write (aiocbp[1]);
  rtems_test_assert (status != -1);
  
  puts ("Init: [WQ] aio_read on 2nd file add by priority");
  aiocbp[2] = create_aiocb (fd[1]);
  status = aio_read (aiocbp[2]);
  rtems_test_assert (status != -1);
  
  puts ("Init: [WQ] aio_write on 3rd file");
  aiocbp[3] = create_aiocb (fd[2]);
  status = aio_write (aiocbp[3]);
  rtems_test_assert (status != -1);
  
  puts ("Init: [WQ] aio_write on 4th file");
  aiocbp[4] = create_aiocb (fd[3]);
  status = aio_write (aiocbp[4]);
  rtems_test_assert (status != -1);
  
  puts ("Init: [WQ] aio_write on 5th file  -- [WQ] full");
  aiocbp[5] = create_aiocb (fd[4]);
  status = aio_write (aiocbp[5]);
  rtems_test_assert (status != -1);
  
  puts ("Init: [IQ] aio_write on 6th file");
  aiocbp[6] = create_aiocb (fd[5]);
  status = aio_write (aiocbp[6]);
  rtems_test_assert (status != -1);
  
  puts ("Init: [IQ] aio_write on 7th file");
  aiocbp[7] = create_aiocb (fd[6]);
  status = aio_write (aiocbp[7]);
  rtems_test_assert (status != -1);

  puts ("Init: [IQ] aio_read on 7th file add by priority");
  aiocbp[8] = create_aiocb (fd[6]); 
  status = aio_read (aiocbp[8]);
  rtems_test_assert (status != -1);

  puts ("Init: [WQ] aio_sync on 1st file add by priority");
  aiocbp[9] = create_aiocb (fd[0]); 
  status = aio_fsync (O_SYNC, aiocbp[9]);
  rtems_test_assert (status != -1);

  puts ("Init: [NONE] aio_cancel aiocbp=NULL and invalid fildes");
  status = aio_cancel (WRONG_FD, NULL);
  rtems_test_assert (status == -1);

  puts ("Init: [NONE] aio_cancel aiocbp=NULL valid fildes not in queue");
  status = aio_cancel (fd[7], NULL);
  rtems_test_assert (status == AIO_ALLDONE);

  puts ("Init: [WQ] aio_cancel aiocbp=NULL fildes=fd[1]");
  status = aio_cancel (fd[1], NULL);
  rtems_test_assert (status == AIO_CANCELED);

  puts ("Init: [IQ] aio_cancel aiocbp=NULL fildes=fd[6]");
  status = aio_cancel (fd[6], NULL);
  rtems_test_assert (status == AIO_CANCELED);

  puts ("Init: [NONE] aio_cancel aiocbp->aio_fildes != fildes");
  status = aio_cancel (fd[4],aiocbp[4]);
  rtems_test_assert (status == -1 );
 
  puts ("Init: [NONE] aio_cancel FD on [IQ], aiocb not on chain");
  aiocbp[10] = create_aiocb (fd[9]);
  status = aio_cancel (fd[9], aiocbp[10]);
  rtems_test_assert (status == -1);

  puts ("Init: [IQ] aio_cancel 6th file only one request");
  status = aio_cancel (fd[5], aiocbp[6]);
  rtems_test_assert (status == AIO_CANCELED);

  puts ("Init: [WQ] aio_cancel 1st file only one request");
  status = aio_cancel (fd[0], aiocbp[9]);
  rtems_test_assert (status == AIO_CANCELED);

  puts ("Init: [NONE] aio_cancel empty [IQ]");
  status = aio_cancel (fd[5], aiocbp[6]);
  rtems_test_assert (status == AIO_ALLDONE);

  puts ("*** END OF POSIX AIO TEST 02 ***");

  for (i = 0; i < MAX; i++)
    {
      close (fd[i]);
      free_aiocb (aiocbp[i]);      
    }
  free_aiocb (aiocbp[i]);
  rtems_test_exit (0);

  return NULL;

}
Example #3
0
File: init.c Project: Fyleo/rtems
void *
POSIX_Init (void *argument)
{
  int fd[MAX];
  struct aiocb *aiocbp[MAX+1];
  int status, i, policy = SCHED_FIFO;
  char filename[BUFSIZE];
  struct sched_param param;

  status = rtems_aio_init ();
  rtems_test_assert (status == 0);

  param.sched_priority = 30;
  status = pthread_setschedparam (pthread_self(), policy, &param);
  rtems_test_assert (status == 0);

  status = mkdir ("/tmp", S_IRWXU);
  rtems_test_assert (!status);

  TEST_BEGIN();

  puts (" Init: Open files ");

  for (i=0; i<MAX; i++)
    {
      sprintf (filename, "/tmp/aio_fildes%d",i);
      fd[i] = open (filename, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO);
      rtems_test_assert ( fd[i] != -1);
    }
  
  puts (" Init: [WQ] aio_write on 1st file ");
  aiocbp[0] = create_aiocb (fd[0]);
  status = aio_write (aiocbp[0]);
  rtems_test_assert (status != -1);
  
  puts (" Init: [WQ] aio_write on 2nd file ");
  aiocbp[1] = create_aiocb (fd[1]);
  status = aio_write (aiocbp[1]);
  rtems_test_assert (status != -1);

  puts (" Init: [WQ] aio_read on 2nd file add by priority ");
  aiocbp[2] = create_aiocb (fd[1]);
  status = aio_read (aiocbp[2]);
  rtems_test_assert (status != -1);
  
  puts (" Init: [WQ] aio_write on 3rd file ");
  aiocbp[3] = create_aiocb (fd[2]);
  status = aio_write (aiocbp[3]);
  rtems_test_assert (status != -1);
  
  puts (" Init: [WQ] aio_write on 4th file ");
  aiocbp[4] = create_aiocb (fd[3]);
  status = aio_write (aiocbp[4]);
  rtems_test_assert (status != -1);
 
  puts (" Init: [WQ] aio_write on 5th file  -- [WQ] full ");
  aiocbp[5] = create_aiocb (fd[4]);
  status = aio_write (aiocbp[5]);
  rtems_test_assert (status != -1);

  puts (" Init: [IQ] aio_write on 6th file ");
  aiocbp[6] = create_aiocb (fd[5]);
  status = aio_read (aiocbp[6]);
  rtems_test_assert (status != -1);
 
  puts (" Init: going to sleep for 5 sec ");
  sleep (5);
  puts (" Init: going to sleep again for 5 sec ");
  sleep (5);
  puts (" Init: going to sleep again for 5 sec ");
  sleep (5);
  
  TEST_END();
  
  for (i = 0; i < MAX; i++)
    {
      close (fd[i]);
      free_aiocb (aiocbp[i]);
    }
  free_aiocb (aiocbp[i]);
  rtems_test_exit (0);
  
  return NULL;
  
}