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; }
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, ¶m); 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; }
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, ¶m); 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; }