1 2002-10-02 Dick Porter <dick@ximian.com>
3 * shared.c: Use mmap() instead of sysv shm for the shared data.
5 * wapi-private.h (_WAPI_HANDLE_VERSION): Reset back to 0, for the
9 * daemon.c: mmap()ed regions survive fork, so just pass the
10 pointer to _wapi_daemon_main instead of mapping it again.
12 2002-10-01 Dick Porter <dick@ximian.com>
14 * timed-thread.c: Kludge for CREATE_SUSPENDED thread creation.
15 Unfortunately libgc uses the same thread suspend technique that I
16 want to, and the two don't mix: libgc will deadlock when it tries
17 to stop the world if a thread has already been suspended by
18 someone else. Just do the simple suspended create rather than the
19 general purpose thread suspension for now.
21 * threads.c: Pass create flags to the timed_thread create call, to
22 implement suspended thread creation. ResumeThread() partially
23 implemented, to cope with the case where a newly created but
24 suspended thread is launched.
26 2002-09-30 Dick Porter <dick@ximian.com>
28 * sockets.c (ioctlsocket): Set non-blocking mode in a better way,
31 2002-09-27 Dick Porter <dick@ximian.com>
33 * semaphores.c: Only include semaphore.h if it's present. Patch
34 for BSD from jmmv@hispabsd.org (Julio Merino).
36 2002-09-27 Dick Porter <dick@ximian.com>
38 * processes.c: Pass environment and working directory to the
39 daemon when forking. Don't let argv[0] be duplicated when looking
40 for the program name. Implement EnumProcessModules (simple
41 version for now, lsof-style later if needed), GetModuleBaseName,
42 {Get,Set}ProcessWorkingSetSize (just faked, because the vm hints
43 aren't available on Linux).
45 * process-private.h: Store the process name, and the working set
49 * handles-private.h: New functions to store and retrieve an array
50 of strings in the scratch space
52 * daemon.c: Don't miss deleting some handles when a client exits
53 (we used to rely on the client doing the final cleanup, but
54 obviously if the client is no longer there the daemon has to do
57 Process forking now sets the environment and the working
60 * io.c: Don't confuse fd 0 with an unassigned handle struct
62 * atomic.h: Add a google cache alternative to the msdn URL
64 2002-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
67 (_wapi_recvfrom): added ECONNRESET to the switch.
69 2002-09-24 Mark Crichton <crichton@gimp.org>
71 * atomic.h: Yea. On linux, sparc isn't sparc, it's __sparc__.
74 2002-09-19 Mark Crichton <crichton@gimp.org>
76 * daemon.c, shared.c: Added NEED_LINK_UNLINK for systems that
77 dont have Linux's abstract filesystem for sockets.
79 2002-09-19 Mark Crichton <crichton@gimp.org>
81 * atomic.h: Added SPARC atomic asm code.
82 * daemon.c, handles-private.h, handles.c, wapi-private.h:
83 undefined _POSIX_THREAD_PROCESS_SHARED. This actually exists on
84 Solaris 9, however, the code paths don't seem to work. More testing
85 on the shared case is *really* needed.
87 2002-09-03 Dick Porter <dick@ximian.com>
90 * threads.c: Removed PosixKillThread(), because it's not in the
93 2002-08-20 Dick Porter <dick@ximian.com>
95 * handles.c (_wapi_handle_scratch_store): Made stored byte lengths
96 multiples of 4 bytes, to keep header structures aligned. Needed
97 for sparc, at least. (Patch from crichton@gimp.org)
99 * handles.c: Removed 'disable_shm' variable (we've defaulted to
100 building with shm enabled for months now)
102 2002-08-19 Dick Porter <dick@ximian.com>
104 * daemon.c: Rewrote the poll() loop to use GIOChannels instead,
105 for legacy NeXT-based systems.
107 2002-08-12 Dick Porter <dick@ximian.com>
109 * atomic.h: Rename some parameters to avoid c++ keywords (Patch
110 from Joseph Wenninger <kde@jowenn.at>)
112 2002-08-05 Dietmar Maurer <dietmar@ximian.com>
114 * threads.c: use fast spinlocks by default
116 2002-08-02 Dick Porter <dick@ximian.com>
118 * io.c (GetStdHandle): Add a handle reference when returning a
119 duplicate console handle. This fixes the unref_handle errors in
122 2002-08-01 Dietmar Maurer <dietmar@ximian.com>
124 * threads.c (TLS_PTHREAD_MUTEX): define this because else some
127 2002-08-01 Dick Porter <dick@ximian.com>
129 * threads.c: Use atomic spinlocks in TLS functions
132 * Makefile.am: Added mono-spinlock.h
134 2002-07-21 Jeffrey Stedfast <fejj@ximian.com>
136 * daemon-messages.c: #include <sys/types.h> and <sys/sockets.h> -
137 these are needed for sendmsg() and also for struct msghdr (at
138 least on Solaris). Solaris still won't build because struct msghdr
139 doesn't have msg_flags, msg_control, or msg_controllen members.
140 (CMSG_SPACE): Define for systems that don't have it.
143 2002-07-20 Dick Porter <dick@ximian.com>
149 * handles.c: Implemented pipe handles
152 * daemon.c: Fixed bug in handle closing.
155 * daemon.c: Forked processes now close all open file descriptors.
157 Fri Jul 19 19:05:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
159 * sockets.h, io-layer.h, critical-sections.h: don't include config.h
162 2002-07-19 Martin Baulig <martin@gnome.org>
164 * threads.c (ExitThread): Call exit() if no threads has been
167 2002-07-17 Dick Porter <dick@ximian.com>
169 * daemon-messages.c: Freebsd fixes from Andreas Kohn
170 <andreas.kohn@gmx.net>
172 2002-07-15 Dick Porter <dick@ximian.com>
174 * io.c: Removed bogus console_flush() method, that was just cut
175 and pasted from file_flush when I separated the two handle types.
177 2002-07-12 Dick Porter <dick@ximian.com>
179 * io.c (convert_from_flags): Fixed misunderstanding wrt fcntl
180 flags. Fixes bug 27633.
182 2002-07-12 Dick Porter <dick@ximian.com>
186 * daemon.c: Use size of sockaddr_un.sun_path from config.h
188 2002-07-12 Dick Porter <dick@ximian.com>
190 * processes.c (CreateProcess): Send stdin, stdout and stderr
191 handles if the startup info doesnt specify new ones
193 * io.c (GetStdHandle): Return the same handle when the same
194 standard handle is requested
196 * handles.c: Pass file descriptors when forking
198 * daemon.c: Use supplied file descriptors when forking a new
202 * daemon-messages.c: Pass stdin, stdout and stderr file
203 descriptors to the daemon (used when forking)
205 2002-07-11 Miguel de Icaza <miguel@ximian.com>
207 * daemon.c (_wapi_daemon_main): Use sizeof
208 (main_socket_address.sun_path) instead of hardcoded 108 value.
210 * handles.c (shared_init): Use sizeof
211 (shared_socket_address.sun_path) instead of hardcoded 108 value.
213 2002-07-10 Dennis Haney <davh@davh.dk>
217 * daemon.c: Lots of documentation, some added error checking, and
218 code readability improvements.
220 * daemon-messages.h: Add the Error request type to improve error
223 * daemon-messages.c: Do a bit more error checking on send() and
224 recv(), and log errors with a higher severity level.
226 2002-07-04 Dick Porter <dick@ximian.com>
228 * daemon.c (process_process_fork): Fix argument handling, due to
229 buggy understanding of g_strsplit() behaviour.
231 2002-07-03 Dick Porter <dick@ximian.com>
234 * threads.c: Implement OpenThread(). Define access-control values
240 * Makefile.am: Added access.h, to hold shared access-control
243 2002-07-02 Dick Porter <dick@ximian.com>
245 * wapi-private.h (_WAPI_HANDLE_VERSION): New protocol version
247 2002-07-02 Dick Porter <dick@ximian.com>
249 * handles.c (shared_init): Make a second attempt to contact the
250 daemon if the shared memory attach succeeds, but the connect()
251 fails. (This copes with the daemon crashing without cleaning up
257 * shared.c (_wapi_shm_attach): Don't exec() anything when we fork
258 the daemon, it's now built into the library.
260 2002-06-25 Dick Porter <dick@ximian.com>
265 * daemon.c: Process forking and handle data management
269 * processes.c: Process forking and other support functions
271 2002-06-25 Dick Porter <dick@ximian.com>
273 * versioninfo.h: PE resource decoding
275 * unicode.c (_wapi_unicode_to_utf8): g_utf16_to_utf8 doesnt need
276 to be told the string length
278 * io.c: Removed the ACTUALLY_DO_UNICODE option. Fixed some leaks.
279 Moved _wapi_time_t_to_filetime and the WapiFileTime typedef to
282 2002-06-12 Dick Porter <dick@ximian.com>
285 * daemon-messages.c: Handle SIGPIPE in a non-stupid way in the
286 daemon, if MSG_NOSIGNAL isn't available. Thanks to Jaroslaw
287 Kowalski <jarek@atm.com.pl> for pointing out the bogosity.
289 2002-06-10 Jaroslaw Kowalski <jarek@atm.com.pl>
291 * sockets.c, daemon-messages.c: Prevent SIGPIPE from being raised
292 when writing to a closed socket.
294 2002-06-08 Jeffrey Stedfast <fejj@ximian.com>
296 * mono-mutex.c (mono_once): New convenience function for my
301 * critical-sections.c:
309 * atomic.c: Use mono_once() rather than pthread_once().
311 2002-06-06 Jeffrey Stedfast <fejj@ximian.com>
313 * handles.c (_wapi_handle_new): pthread_once() is not atomic, so
314 if multiple threads all try to call _wapi_handle_new() before the
315 shared data has been initialized, it is possible that we could get
316 into a condition where shared_init() is being executed and later
317 threads will pass by pthread_once() due to the fact that it has
318 already been called and so therefor will attempt to use the shared
319 data before it has been completely initialized. If we instead use
320 a standard mutex locking mechanism around shared_init(), we can
321 avoid the situation entirely. By wrapping the mutex locking in a
322 check to see if we've already initialized the data, we can even
323 avoid wasting resources by having to lock/unlock the mutex in any
324 later calls (the only time we'd have to worry about
325 locking/unlocking is the initial race to call shared_init() at
328 Sat Jun 1 13:27:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
330 * atomic.h: inline asm fixes from Dennis Haney (davh@davh.dk).
332 Fri May 31 16:21:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
334 * daemon.c, handles.c: rename "sun" local var since it's apparently
335 a #define on Solaris.
337 Fri May 31 15:40:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
339 * daemon-messages.c: work-around MSG_NOSIGNAL missing on some
342 2002-05-15 Dick Porter <dick@ximian.com>
344 * wait.c: Fix a deadlock in WaitForMultipleObjects
346 2002-05-14 Dick Porter <dick@ximian.com>
348 * io.c: Fix a cut&paste error, found by
349 Jaroslaw Kowalski <jarek@atm.com.pl>
351 2002-05-10 Dan Lewis <dihlewis@yahoo.co.uk>
355 2002-05-09 Dick Porter <dick@ximian.com>
363 * Makefile.am: Remove now-unused file wait-private.h
365 2002-05-08 Dick Porter <dick@ximian.com>
367 * shared.c: Better error messages, and report when daemon
368 connection fails rather than blocking forever. Do some more
369 shared memory sanity checking.
371 * handles.c: Better error messages when connecting to shared
372 memory and the handle daemon. Fall back to non-shared handles if
373 an error occurs. Set the default back to 'shared handles'. Fix a
374 crashing bug in scratch space allocation that mangled the block
377 2002-05-07 Miguel de Icaza <miguel@ximian.com>
379 * handles.c (shared_init): Disable SHM for now, people have too
380 many problems with this, and the diagnostics are not helping.
382 2002-05-06 Dan Lewis <dihlewis@yahoo.co.uk>
384 * io.c: CreateFile sets win32 last error.
386 2002-05-05 Dick Porter <dick@ximian.com>
397 * semaphore-private.h:
401 * event-private.h: Simplify the WapiHandleOps struct: take out all
402 the file-specific entries, leaving just the items that operate on
403 handles themselves. Split the close operation into shared and
404 private parts: shared close is called by the daemon.
406 * handles.c: As above, but also pass handle allocation, ref and
407 unref operations to the daemon. Populate the handle_ops array at
408 compile time, because the daemon needs to call ops on handles too.
409 Don't bother to track open handle counts any more, the daemon does
413 * thread-private.h: As above, but also make the thread data
416 * shared.c: Fork a handle daemon if the calling process created
417 the shared memory segment.
422 * Makefile.am: Build a daemon to manage handle allocation and
423 destruction without needing to lock the shared memory
425 2002-04-30 Jeffrey Stedfast <fejj@ximian.com>
427 * atomic.c: Changed to use a normal mutex rather than a spinlock
428 since a lot of platforms seem to not have them :\
430 2002-04-30 Dick Porter <dick@ximian.com>
432 * Completely rewrote the handle waiting code: removed the helper
433 thread and its attendant complexity. All handle waiting is now
434 abstracted into the WaitForSingleObject() and
435 WaitForMultipleObjects() functions.
437 * Implemented inter-process sharing of handles using sysv shared
438 memory. This makes handles even more opaque, with a handle now
439 just an index into an array.
441 2002-04-25 Dan Lewis <dihlewis@yahoo.co.uk>
443 * io.c: unitialized pointer in GetCurrentDirectory.
445 Sat Apr 20 13:37:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
447 * threads.c: destroy the mutex at thread destruction
448 (if/when thread destruction code will be actually called).
449 When protecting a tls data pointer from the gc, use also the
450 thread id in the key.
452 Wed Apr 17 18:36:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
454 * timed-thread.c: avoid race condition when setting the thread to
457 2002-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
459 * jit.h: to more #include lines to avoid breaking compilation
460 under windows when upgrading mingw and w32api to version
463 2002-04-16 Dick Porter <dick@ximian.com>
465 * atomic.h: Explanatory comment about lack of 80386 support
467 2002-04-15 Dick Porter <dick@ximian.com>
469 * atomic.h: use xaddl for InterlockedIncrement() and
470 InterlockedDecrement(). Use cmpxchgl in a loop for
471 InterlockedExchange() and InterlockedExchangePointer().
473 Mon Apr 15 13:31:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
475 * unicode.c: fix unicode_len() to not access uninitialized memory
476 (and updated to conform to mono code style).
478 Fri Mar 29 17:15:11 CET 2002 Paolo Molaro <lupus@ximian.com>
480 * io.c: EEXISTS is ignored for directory creation.
481 * mono-mutex.h: remove silly "pragma }" that emacs users insert
482 because they use a broken editor:-)
484 2002-03-28 Dick Porter <dick@ximian.com>
490 * handles.c: Warning cleanups
492 2002-03-27 Dan Lewis <dihlewis@yahoo.co.uk>
494 * unicode.h, unicode.c: changed to gunichar2
495 * io.h, io.c: changed strings to gunichar2*, added
496 SetFileAttributes(), GetCurrentDirectory(), SetCurrentDirectory(),
497 some fixes to FindFirstFile() and friends.
499 2002-03-26 Dick Porter <dick@ximian.com>
501 * types.h: Implement the large integer struct
504 * timefuncs.c: Dummy functions that don't yet implement
505 QueryPerformanceCounter() and QueryPerformanceFrequency()
508 * threads.c: Implement SleepEx()
511 * system.c: Beginnings of GetSystemInfo()
513 * mono-mutex.c (pthread_mutex_timedlock): Fix a ms/ns conversion
517 * context.c: Dummy function that doesnt yet implement
521 * atomic.c: Interlocked functions
523 Mon Mar 25 13:01:40 CET 2002 Paolo Molaro <lupus@ximian.com>
525 * threads.c: use a gc-safe hash table to store tls pointers.
527 2002-03-22 Dick Porter <dick@ximian.com>
529 * threads.c: Fix a race condition where a thread can start and
530 exit before the handle has been properly initialised (no reason
531 why the handle couldn't be initialised beforehand, so do so)
533 Fix a ms to ns conversion magnitude thinko.
535 2002-03-21 Dick Porter <dick@ximian.com>
537 * semaphores.c: Fix a problem when waiting for one or more
538 semaphores, and another semaphore is Released (all waiting
539 semaphores assumed they were signalled)
541 2002-03-29 Dan Lewis <dihlewis@yahoo.co.uk>
543 * io.h, io.c, uglify.h: added MoveFile, CopyFile, CreateDirectory,
544 RemoveDirectory, GetFileAttributes, GetFileAttributesEx
546 2002-03-19 Dietmar Maurer <dietmar@ximian.com>
548 * threads.c (Sleep): bug fix: 1ms == 1000000ns
550 2002-03-19 Dan Lewis <dihlewis@yahoo.co.uk>
552 * io.h, io.c, events.c, mutexes.c, semaphores.c, sockets.c,
553 threads.c, io.c: added flush method to handles.
555 * io.c: FlushFileBuffers() and FindFirstFile() functions.
557 Thu Mar 7 17:21:52 CET 2002 Paolo Molaro <lupus@ximian.com>
559 * threads.c, timed-thread.c, wait.c: Boehm-GC anable.
561 2002-02-20 Dick Porter <dick@ximian.com>
563 * io-layer.h: Always build without cygwin support on windows
565 Mon Feb 18 15:50:59 CET 2002 Paolo Molaro <lupus@ximian.com>
567 * sockets.c: #undef DEBUG.
569 2002-02-14 Jeffrey Stedfast <fejj@ximian.com>
571 * io-layer.h: conditionally include sys/filio.h and sys/sockio.h
572 for FIONBIO, FIONREAD, and SIOCATMARK.
574 2002-02-14 Jeffrey Stedfast <fejj@ximian.com>
576 * sockets.c: conditionally include sys/filio.h and sys/sockio.h
577 for FIONBIO, FIONREAD, and SIOCATMARK.
579 2002-02-13 Dick Porter <dick@ximian.com>
581 * sockets.c: Implement shutdown and select
583 2002-02-13 Jeffrey Stedfast <fejj@ximian.com>
585 * mono-mutex.[c,h]: New source files that thinly wrap all pthread
586 functions that take pthread_mutex_t and/or pthread_mutexattr_t
587 arguments for the sake of portability. Implements recursive
588 mutexes and pthread_mutex_timedlock.
590 * critical-sections.c:
597 * wait.c: Use the mono-mutex wrapper portability functions/macros.
599 * pthread-compat.[c,h]: Replaced by mono-mutex.[c,h]
601 2002-01-23 Dick Porter <dick@ximian.com>
603 * sockets.c: Networking support, mostly wrapping BSD socket APIs
604 with handle code, and translating errno into w32 error codes.
606 * macros.h: Some w32 macros used with the socket support
608 * error.c: Implemented GetLastError() and SetLastError()
610 * Makefile.am: Added sockets, with kludge to override some symbols
612 2001-12-17 Dietmar Maurer <dietmar@ximian.com>
614 * unicode.c (_wapi_unicode_to_utf8): byteswap UTF16 strings before
615 passing them to iconv
616 (_wapi_unicode_to_utf8): only swap bytes on LE systems, remove bug
617 from previous commit.
619 2001-12-11 Dick Porter <dick@ximian.com>
621 * io.c: Implement DeleteFile(), GetFileTime(), SetFileTime() and
622 FileTimeToSystemTime().
624 * unicode.c (unicode_len): Nasty way of finding length of unicode
625 string with embedded NULLs (counts until two NULLs together).
627 * mutexes.c (mutex_close):
628 * events.c (event_close): Release the internal pthreads resources
630 2001-11-26 Dick Porter <dick@ximian.com>
632 * critical-sections.c:
640 * wait.c: turn off DEBUG messages
642 2001-11-22 Dick Porter <dick@ximian.com>
644 * handles.c (SignalObjectAndWait): Implement
646 * wait.c (WaitForSingleObject): Fix case where timeout == 0
652 * events.c: Support for SignalObjectAndWait
654 2001-11-21 Dick Porter <dick@ximian.com>
661 * wait.c: Reliable method of returning which handle was signalled
662 on return from WaitForMultipleObjects().
664 2001-11-21 Dick Porter <dick@ximian.com>
666 * events.c: Implement events
668 2001-11-15 Dick Porter <dick@ximian.com>
670 * mutexes.c: Implement mutexes
674 * misc.c: Factor out some common code
676 2001-11-13 Dick Porter <dick@ximian.com>
678 * threads.c: Implement TLS. Implement GetCurrentThreadId(), and
679 GetCurrentThread() by maintaining a hash of thread handles.
681 * threads.h: Define thread and process creation flags
683 2001-11-12 Dick Porter <dick@ximian.com>
685 * critical-sections.c: Implement critical sections
687 2001-11-12 Dick Porter <dick@ximian.com>
689 * semaphores.c: Implement semaphores
691 * wait.c (wait_for_item): Maintain a wait count rather than count
694 * threads.c (thread_wait_multiple): Don't lock the wait item, that
695 will block other wait threads
697 2001-11-11 Dick Porter <dick@ximian.com>
699 * Makefile.am: Rename some automake variables
700 (from Nick Drochak <ndrochak@gol.com>)
702 2001-11-10 Dick Porter <dick@ximian.com>
704 * Makefile.am (libwapiincludedir): Fix include destination
706 * .cvsignore: Ignore generated files
708 2001-11-10 Dietmar Maurer <dietmar@ximian.com>
710 * pthread-compat.c: added some include files to make it compile on
713 2001-11-08 Dick Porter <dick@ximian.com>
717 This is a library emulating the win32 threading and IO API.