http://bugs.winehq.org/show_bug.cgi?id=9142
--- Comment #18 from Peter Dons Tychsen donpedro@tdcadsl.dk 2009-10-17 07:14:46 --- OK, that sounds reasonable, as everything would freeze.
Any other way to handle the EAGAIN? The create_file server code seems to do the following:
1) Get access rights in server 2) Open/create the file in server 3) Save unix_fd in server
Why is step #2 done in the server at all? If the server must never block (which sounds reasonable), then why is open() not executed in ntdll instead? If a device does not implement O_NONBLOCK then it would end up blocking anyway.
Could it be changed to the following?:
1) Get access rights from server 2) Open/create file in ntdll 3) Save unix_fd in server
That should allow for the O_NONBLOCK to be removed, and might also free up the server if there is a pending open().
Thanks,
/p