Opened 9 years ago

Closed 9 years ago

#41 closed task (fixed)

Async completion API emulation for OS/2

Reported by: Valery V. Sedletski Owned by:
Priority: major Milestone: Enhanced
Component: Common Tasks Keywords: aio async asynchronous request
Cc:

Description

Some parts of VBox code (like src/VBox/Devices/Storage/DrvVD.cpp)require the AIO API, either, win32-like or posix-like. This API makes possible asynchronous I/O requests put in queue, without immediately blocking and getting status. Without these API's, SATA/SCSI/SAS won't work. We have no such API's on OS/2, so we need to emulate them somehow. For UNIX/Linux, there exists libAIO -- maybe, we could take this as a base.

Change History (4)

comment:1 by Valery V. Sedletski, 9 years ago

For UNIX/Linux, there exists libAIO -- maybe, we could take this as a base.

In Linux the POSIX AIO interfaces are provided by glibc since version 2.1.

see http://man7.org/linux/man-pages/man7/aio.7.html

"The current Linux POSIX AIO implementation is provided in user space by glibc." -- So, we maybe could port it from glibc.

Last edited 9 years ago by Valery V. Sedletski (previous) (diff)

comment:2 by Valery V. Sedletski, 9 years ago

Ported AIO code from Linux Glibc, so far. Made aio.dll and SATA now works. But now I am getting traps in pthrd01.dll, in pthread_cond_destroy, when cond variable is equal to PTHREAD_COND_INITIALIZER == -1. Debugging.

comment:3 by Valery V. Sedletski, 9 years ago

The libaio code extracted from glibc is now working. Created the .rpm package for it and committed to ports repository. Linked and tested with VBox code, now SATA and SCSI works.

comment:4 by Valery V. Sedletski, 9 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.