﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	resolution	keywords	cc
34	Adjust RTPipe API	dmik	Valery V. Sedletski	"The current OS/2 implementation of the RTPipe api uses `DosCreateNPipe` and friends, i.e. OS/2 native named pipes. This imposes a problem though: some cross-platform code (e.g. `DrvNAT.cpp`, `DrvTAP.cpp`) uses LIBC `poll()` to work with pipes created by `RTPipeCreate`, but OS/2 native pipes are incompatible with LIBC `select()` which is used there by the `poll()` implementation.

There are several ways to deal with that:

1. Replace RPIPE with RTSOCKET and use `RTSocket` instead (sockets are compatible with `select()`). Seems to work but creates a lot of OS/2-specific #ifdefs in the sources, not very good.
2. Change  the `RTPlpe` implementation to use the posix code path (the one Linux uses). This implies using `socketpair` instead of `pipe` (as the latter also creates handles incompatible with `select`). Looks attractive as doesn't require any changes in the using code.
3. Change the using code (`DrvNAT.cpp` and others) to use `RTPoll` instead of `poll` as the former knows how to deal with OS/2 native pipes created with `RTPipeCreate`."	defect	closed	blocker	VBox driver	Runtime	fixed		
