[RTEMS Project] #5000: Implement POSIX Asynchronous IO
RTEMS trac
trac at rtems.org
Sat Mar 16 17:12:07 UTC 2024
#5000: Implement POSIX Asynchronous IO
----------------------------+------------------------
Reporter: Joel Sherrill | Owner: (none)
Type: enhancement | Status: new
Priority: normal | Milestone:
Component: posix | Version:
Severity: normal | Keywords: SoC, POSIX
Blocked By: | Blocking:
----------------------------+------------------------
RTEMS does not currently support POSIX Asynchronous IO as defined by The
Open Group. These methods and associated constants are prototyped by the
[http://www.opengroup.org/onlinepubs/009695399/basedefs/aio.h.html
<aio.h>] header file which is cpukit/posix/include/aio.h in the RTEMS
source tree. The following methods have already been implemented but
should be reviewed against the POSIX specification to ensure they are as
complete as possible:
- aio_read()
- aio_write()
- aio_cancel()
- aio_error()
- aio_return()
The implementation of the above AIO methods includes a server thread which
performs the user's AIO requests. These AIO methods request a SINGLE
operation.
The method lio_listio() is not implemented currently in RTEMS. The
current implementation between the aio_ methods and the server thread will
need to grow to support a list. The straightforward way to accomplish this
is to modify the current aio_ infrastructure to treat a single aio_
request as a list of one. Then the lio_listio() should be a simple
modification.
The current implementation leans to a long-ish function to process AIO
requests. This processing should be refactored so while iterating the
list, the server thread calls a helper method for each request type.
The implementation has a single server thread. The server thread
characteristics such as stack size and priority should be application
configurable.
There will need to be tests added for the new functionality. Coverage will
need to be reviewed for the AIO functionality.
Possible Mentors: Joel Sherrill, Gedare Bloom, Chris Johns, Kinsey Moore
--
Ticket URL: <http://devel.rtems.org/ticket/5000>
RTEMS Project <http://www.rtems.org/>
RTEMS Project
More information about the bugs
mailing list