[ros-kernel] Posix Subsystem for ReactOS

KJK::Hyperion noog at libero.it
Sat Jul 10 00:50:30 CEST 2004


At 02.24 08/07/2004, you wrote:
>GPL'd, too -- it'd make for a huge head start for our Posix subsystem!

it sounds good in the beginning, but it's unremarkable, really. I've 
studied it in depth. The only actually useful thing it does is implementing 
signals, and even in that case the only "new" thing it does is using APCs 
to switch threads - the rest, i.e. the real signaling logic, has been 
implemented a lot better in other systems, like FreeBSD (I know, I have 
compared them directly - I just couldn't extract any useful information 
from WINNTPOSIX's endless maze of nested if blocks, double-underscore 
identifiers, huge identical blocks of code copied and pasted around and 
miscellaneous misspellings)

Apart from that, its POSIX threads library is awful (he's even proud his 
spinlocks don't spin), it doesn't integrate as much as it *invades* (takes 
over trap handlers - even *disabling SEH* for threads with POSIX signals 
enabled, pretty much negating the whole "POSIX additions to Windows" idea - 
and hooks several scheduling functions, breaking them on purpose - what do 
you call a non-interruptable wait that gets interrupted? and his trick 
won't work on ReactOS, BTW), it has some byzantine version sniffing and 
deeply hooks ntdll in a desperate attempt to support forking of Win32 processes

The latter will never, ever work, and the fact that his perverse 
reinitialization on forking of .data and .bss sections in kernel32.dll, 
user32.dll and gdi32.dll works *today* means nothing - it could break any 
day, and is just postponing the inevitable, i.e. writing a *full* POSIX 
environment, with a simulated VFS, simulated POSIX-like virtual memory and 
all the goodness we enjoy today with Cygwin and Interix. Signaling and 
forking weren't meant to be implemented without the rest

My verdict is: waste of time. Get coLinux working, instead. It has much 
more potential 



More information about the Ros-kernel mailing list