mikaku / Fiwix

A UNIX-like kernel for the i386 architecture
https://www.fiwix.org
Other
401 stars 32 forks source link

Fix accept/connect using select on UNIX sockets #82

Closed ghaerr closed 5 months ago

ghaerr commented 5 months ago

This fix allows UNIX sockets to work with select, and thus nano-X to run in client/server mode. Discussed in https://github.com/mikaku/Fiwix/pull/79#issuecomment-1966848770.

Further testing with nano-X shows that there are still Fiwix problems with timeouts in select or also possibly when reading from file descriptors in raw mode. This was temporarily worked around by passing a zero timeout (i.e. polling) in nano-X's select. As you will see in the video below, the mouse needs to moved (that is, events need to be generated) before Nano-X starts running properly, and the window backgrounds aren't repainted quickly because of improper select/time/event handling.

With multiple clients running, there are also some kernel problems with different process socket data to/from the nano-X server getting mixed up, with nano-X reporting the trouble and exiting. All that will have to be worked on later.

Some printks are left in the unix_select code, to continue debugging UNIX socket activity.

Here's nano-X running with nxeyes (special for @mikaku), and a couple other clients:

https://github.com/mikaku/Fiwix/assets/11985637/d48b50fa-0928-4156-bc52-edf6fd9ff54a

mikaku commented 5 months ago

Thank you very much.