/* SPDX-License-Identifier: BSD-2-Clause */ /* * Copyright 2011, Alin Rus * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * */ #if !defined(OPERATION_COUNT) #define OPERATION_COUNT 100 #endif #ifdef HAVE_CONFIG_H #include "config.h" #endif #define CONFIGURE_INIT #include "system.h" #include #include "tmacros.h" #include #include #include #include #include #include #include #include const char rtems_test_name[] = "PSXAIO 3"; /* forward declarations to avoid warnings */ struct aiocb *create_aiocb(int fd); void free_aiocb(struct aiocb *aiocbp); #define FD_COUNT 6 #define BUFSIZE 128 struct aiocb * create_aiocb (int fd) { struct aiocb *aiocbp; aiocbp = malloc (sizeof (struct aiocb)); memset (aiocbp, 0, sizeof (struct aiocb)); aiocbp->aio_buf = malloc (BUFSIZE * sizeof (char)); aiocbp->aio_nbytes = BUFSIZE; aiocbp->aio_offset = 0; aiocbp->aio_reqprio = 0; aiocbp->aio_fildes = fd; return aiocbp; } void free_aiocb (struct aiocb *aiocbp) { free ((char*) aiocbp->aio_buf); free (aiocbp); } void * POSIX_Init (void *argument) { int fd[FD_COUNT]; struct aiocb *aiocbp[FD_COUNT+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