2002-05-05 Dick Porter <dick@ximian.com>
authorDick Porter <dick@acm.org>
Sun, 5 May 2002 13:45:35 +0000 (13:45 -0000)
committerDick Porter <dick@acm.org>
Sun, 5 May 2002 13:45:35 +0000 (13:45 -0000)
commita4df47fdd4832437055f49598243fe619f932315
tree4531ac121f6c0e82622f25bbab2d4c6d5883fa4d
parent8634321c6ac87645af7eaaef3f1a10eed18179ba
2002-05-05  Dick Porter  <dick@ximian.com>

* wapi-private.h:
* handles-private.h:
* io.c:
* io-private.h:
* mutexes.c:
* mutex-private.h:
* processes.c:
* process-private.h:
* semaphores.c:
* semaphore-private.h:
* sockets.c:
* socket-private.h:
* events.c:
* event-private.h: Simplify the WapiHandleOps struct: take out all
the file-specific entries, leaving just the items that operate on
handles themselves.  Split the close operation into shared and
private parts: shared close is called by the daemon.

* handles.c: As above, but also pass handle allocation, ref and
unref operations to the daemon.  Populate the handle_ops array at
compile time, because the daemon needs to call ops on handles too.
Don't bother to track open handle counts any more, the daemon does
that.

* threads.c:
* thread-private.h: As above, but also make the thread data
handle-private.

* shared.c: Fork a handle daemon if the calling process created
the shared memory segment.

* daemon.c:
* daemon-messages.c:
* daemon-messages.h:
* Makefile.am: Build a daemon to manage handle allocation and
destruction without needing to lock the shared memory

svn path=/trunk/mono/; revision=4306
29 files changed:
mono/handles/Makefile.am
mono/handles/hps.c
mono/handles/scratch.c
mono/io-layer/.cvsignore
mono/io-layer/ChangeLog
mono/io-layer/Makefile.am
mono/io-layer/daemon-messages.c [new file with mode: 0644]
mono/io-layer/daemon-messages.h [new file with mode: 0644]
mono/io-layer/daemon.c [new file with mode: 0644]
mono/io-layer/event-private.h
mono/io-layer/events.c
mono/io-layer/handles-private.h
mono/io-layer/handles.c
mono/io-layer/io-private.h
mono/io-layer/io.c
mono/io-layer/mutex-private.h
mono/io-layer/mutexes.c
mono/io-layer/process-private.h
mono/io-layer/processes.c
mono/io-layer/semaphore-private.h
mono/io-layer/semaphores.c
mono/io-layer/shared.c
mono/io-layer/shared.h
mono/io-layer/socket-private.h
mono/io-layer/sockets.c
mono/io-layer/thread-private.h
mono/io-layer/threads.c
mono/io-layer/wapi-private.h
mono/metadata/socket-io.c