Hi Phillip,
The wineserver does the job of the Windows NT kernel in wine.
Here's a summary of what i've worked out about the wineserver:
* the wineserver is responsible for all system level synchronization of wine processes, and maintaining integrity of handles
* the wineserver is the sole repository for all HANDLE data in the wine process group.
* wineserver communicates with each wine process thru a socket and shared memory. There is one socket and one shared memory area per wine process.
* the main task of wineserver is a loop which polls on all the wine process sockets, and handles timeouts.
* the wineserver processes requests one by one (it is a single thread).
* each request is triggered by the wine process writing to its socket, and ended when the wineserver writes back to the socket. During the request, the wine process is effectively stopped.
* request data may be read to or written from the shared memory, but the shared memory is not used for synchronization. Synchronization is maintained solely by socket reads and writes.
* the wineserver should end each request before processing the next
* the wineserver must never wait for or depend upon any wine processes. All wine processes must be assumed to be unstable and unreliable. (even if they're not)
* the wineserver design is reliable, but rather slow due to all the context switching required by each request. David Howells made an effort to turn it into a Linux kernel module... he hasn't finished yet.
hope that's accurate and helpful...
Mike
------------------------------------------ mailto:Mike_McCormack@start.com.au ph +82 16 430 0425
__________________________________________________________________ Get your free Australian email account at http://www.Looksmart.com.au