1 2002-09-27 Dick Porter <dick@ximian.com>
3 * semaphores.c: Only include semaphore.h if it's present. Patch
4 for BSD from jmmv@hispabsd.org (Julio Merino).
6 2002-09-27 Dick Porter <dick@ximian.com>
8 * processes.c: Pass environment and working directory to the
9 daemon when forking. Don't let argv[0] be duplicated when looking
10 for the program name. Implement EnumProcessModules (simple
11 version for now, lsof-style later if needed), GetModuleBaseName,
12 {Get,Set}ProcessWorkingSetSize (just faked, because the vm hints
13 aren't available on Linux).
15 * process-private.h: Store the process name, and the working set
19 * handles-private.h: New functions to store and retrieve an array
20 of strings in the scratch space
22 * daemon.c: Don't miss deleting some handles when a client exits
23 (we used to rely on the client doing the final cleanup, but
24 obviously if the client is no longer there the daemon has to do
27 Process forking now sets the environment and the working
30 * io.c: Don't confuse fd 0 with an unassigned handle struct
32 * atomic.h: Add a google cache alternative to the msdn URL
34 2002-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
37 (_wapi_recvfrom): added ECONNRESET to the switch.
39 2002-09-24 Mark Crichton <crichton@gimp.org>
41 * atomic.h: Yea. On linux, sparc isn't sparc, it's __sparc__.
44 2002-09-19 Mark Crichton <crichton@gimp.org>
46 * daemon.c, shared.c: Added NEED_LINK_UNLINK for systems that
47 dont have Linux's abstract filesystem for sockets.
49 2002-09-19 Mark Crichton <crichton@gimp.org>
51 * atomic.h: Added SPARC atomic asm code.
52 * daemon.c, handles-private.h, handles.c, wapi-private.h:
53 undefined _POSIX_THREAD_PROCESS_SHARED. This actually exists on
54 Solaris 9, however, the code paths don't seem to work. More testing
55 on the shared case is *really* needed.
57 2002-09-03 Dick Porter <dick@ximian.com>
60 * threads.c: Removed PosixKillThread(), because it's not in the
63 2002-08-20 Dick Porter <dick@ximian.com>
65 * handles.c (_wapi_handle_scratch_store): Made stored byte lengths
66 multiples of 4 bytes, to keep header structures aligned. Needed
67 for sparc, at least. (Patch from crichton@gimp.org)
69 * handles.c: Removed 'disable_shm' variable (we've defaulted to
70 building with shm enabled for months now)
72 2002-08-19 Dick Porter <dick@ximian.com>
74 * daemon.c: Rewrote the poll() loop to use GIOChannels instead,
75 for legacy NeXT-based systems.
77 2002-08-12 Dick Porter <dick@ximian.com>
79 * atomic.h: Rename some parameters to avoid c++ keywords (Patch
80 from Joseph Wenninger <kde@jowenn.at>)
82 2002-08-05 Dietmar Maurer <dietmar@ximian.com>
84 * threads.c: use fast spinlocks by default
86 2002-08-02 Dick Porter <dick@ximian.com>
88 * io.c (GetStdHandle): Add a handle reference when returning a
89 duplicate console handle. This fixes the unref_handle errors in
92 2002-08-01 Dietmar Maurer <dietmar@ximian.com>
94 * threads.c (TLS_PTHREAD_MUTEX): define this because else some
97 2002-08-01 Dick Porter <dick@ximian.com>
99 * threads.c: Use atomic spinlocks in TLS functions
102 * Makefile.am: Added mono-spinlock.h
104 2002-07-21 Jeffrey Stedfast <fejj@ximian.com>
106 * daemon-messages.c: #include <sys/types.h> and <sys/sockets.h> -
107 these are needed for sendmsg() and also for struct msghdr (at
108 least on Solaris). Solaris still won't build because struct msghdr
109 doesn't have msg_flags, msg_control, or msg_controllen members.
110 (CMSG_SPACE): Define for systems that don't have it.
113 2002-07-20 Dick Porter <dick@ximian.com>
119 * handles.c: Implemented pipe handles
122 * daemon.c: Fixed bug in handle closing.
125 * daemon.c: Forked processes now close all open file descriptors.
127 Fri Jul 19 19:05:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
129 * sockets.h, io-layer.h, critical-sections.h: don't include config.h
132 2002-07-19 Martin Baulig <martin@gnome.org>
134 * threads.c (ExitThread): Call exit() if no threads has been
137 2002-07-17 Dick Porter <dick@ximian.com>
139 * daemon-messages.c: Freebsd fixes from Andreas Kohn
140 <andreas.kohn@gmx.net>
142 2002-07-15 Dick Porter <dick@ximian.com>
144 * io.c: Removed bogus console_flush() method, that was just cut
145 and pasted from file_flush when I separated the two handle types.
147 2002-07-12 Dick Porter <dick@ximian.com>
149 * io.c (convert_from_flags): Fixed misunderstanding wrt fcntl
150 flags. Fixes bug 27633.
152 2002-07-12 Dick Porter <dick@ximian.com>
156 * daemon.c: Use size of sockaddr_un.sun_path from config.h
158 2002-07-12 Dick Porter <dick@ximian.com>
160 * processes.c (CreateProcess): Send stdin, stdout and stderr
161 handles if the startup info doesnt specify new ones
163 * io.c (GetStdHandle): Return the same handle when the same
164 standard handle is requested
166 * handles.c: Pass file descriptors when forking
168 * daemon.c: Use supplied file descriptors when forking a new
172 * daemon-messages.c: Pass stdin, stdout and stderr file
173 descriptors to the daemon (used when forking)
175 2002-07-11 Miguel de Icaza <miguel@ximian.com>
177 * daemon.c (_wapi_daemon_main): Use sizeof
178 (main_socket_address.sun_path) instead of hardcoded 108 value.
180 * handles.c (shared_init): Use sizeof
181 (shared_socket_address.sun_path) instead of hardcoded 108 value.
183 2002-07-10 Dennis Haney <davh@davh.dk>
187 * daemon.c: Lots of documentation, some added error checking, and
188 code readability improvements.
190 * daemon-messages.h: Add the Error request type to improve error
193 * daemon-messages.c: Do a bit more error checking on send() and
194 recv(), and log errors with a higher severity level.
196 2002-07-04 Dick Porter <dick@ximian.com>
198 * daemon.c (process_process_fork): Fix argument handling, due to
199 buggy understanding of g_strsplit() behaviour.
201 2002-07-03 Dick Porter <dick@ximian.com>
204 * threads.c: Implement OpenThread(). Define access-control values
210 * Makefile.am: Added access.h, to hold shared access-control
213 2002-07-02 Dick Porter <dick@ximian.com>
215 * wapi-private.h (_WAPI_HANDLE_VERSION): New protocol version
217 2002-07-02 Dick Porter <dick@ximian.com>
219 * handles.c (shared_init): Make a second attempt to contact the
220 daemon if the shared memory attach succeeds, but the connect()
221 fails. (This copes with the daemon crashing without cleaning up
227 * shared.c (_wapi_shm_attach): Don't exec() anything when we fork
228 the daemon, it's now built into the library.
230 2002-06-25 Dick Porter <dick@ximian.com>
235 * daemon.c: Process forking and handle data management
239 * processes.c: Process forking and other support functions
241 2002-06-25 Dick Porter <dick@ximian.com>
243 * versioninfo.h: PE resource decoding
245 * unicode.c (_wapi_unicode_to_utf8): g_utf16_to_utf8 doesnt need
246 to be told the string length
248 * io.c: Removed the ACTUALLY_DO_UNICODE option. Fixed some leaks.
249 Moved _wapi_time_t_to_filetime and the WapiFileTime typedef to
252 2002-06-12 Dick Porter <dick@ximian.com>
255 * daemon-messages.c: Handle SIGPIPE in a non-stupid way in the
256 daemon, if MSG_NOSIGNAL isn't available. Thanks to Jaroslaw
257 Kowalski <jarek@atm.com.pl> for pointing out the bogosity.
259 2002-06-10 Jaroslaw Kowalski <jarek@atm.com.pl>
261 * sockets.c, daemon-messages.c: Prevent SIGPIPE from being raised
262 when writing to a closed socket.
264 2002-06-08 Jeffrey Stedfast <fejj@ximian.com>
266 * mono-mutex.c (mono_once): New convenience function for my
271 * critical-sections.c:
279 * atomic.c: Use mono_once() rather than pthread_once().
281 2002-06-06 Jeffrey Stedfast <fejj@ximian.com>
283 * handles.c (_wapi_handle_new): pthread_once() is not atomic, so
284 if multiple threads all try to call _wapi_handle_new() before the
285 shared data has been initialized, it is possible that we could get
286 into a condition where shared_init() is being executed and later
287 threads will pass by pthread_once() due to the fact that it has
288 already been called and so therefor will attempt to use the shared
289 data before it has been completely initialized. If we instead use
290 a standard mutex locking mechanism around shared_init(), we can
291 avoid the situation entirely. By wrapping the mutex locking in a
292 check to see if we've already initialized the data, we can even
293 avoid wasting resources by having to lock/unlock the mutex in any
294 later calls (the only time we'd have to worry about
295 locking/unlocking is the initial race to call shared_init() at
298 Sat Jun 1 13:27:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
300 * atomic.h: inline asm fixes from Dennis Haney (davh@davh.dk).
302 Fri May 31 16:21:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
304 * daemon.c, handles.c: rename "sun" local var since it's apparently
305 a #define on Solaris.
307 Fri May 31 15:40:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
309 * daemon-messages.c: work-around MSG_NOSIGNAL missing on some
312 2002-05-15 Dick Porter <dick@ximian.com>
314 * wait.c: Fix a deadlock in WaitForMultipleObjects
316 2002-05-14 Dick Porter <dick@ximian.com>
318 * io.c: Fix a cut&paste error, found by
319 Jaroslaw Kowalski <jarek@atm.com.pl>
321 2002-05-10 Dan Lewis <dihlewis@yahoo.co.uk>
325 2002-05-09 Dick Porter <dick@ximian.com>
333 * Makefile.am: Remove now-unused file wait-private.h
335 2002-05-08 Dick Porter <dick@ximian.com>
337 * shared.c: Better error messages, and report when daemon
338 connection fails rather than blocking forever. Do some more
339 shared memory sanity checking.
341 * handles.c: Better error messages when connecting to shared
342 memory and the handle daemon. Fall back to non-shared handles if
343 an error occurs. Set the default back to 'shared handles'. Fix a
344 crashing bug in scratch space allocation that mangled the block
347 2002-05-07 Miguel de Icaza <miguel@ximian.com>
349 * handles.c (shared_init): Disable SHM for now, people have too
350 many problems with this, and the diagnostics are not helping.
352 2002-05-06 Dan Lewis <dihlewis@yahoo.co.uk>
354 * io.c: CreateFile sets win32 last error.
356 2002-05-05 Dick Porter <dick@ximian.com>
367 * semaphore-private.h:
371 * event-private.h: Simplify the WapiHandleOps struct: take out all
372 the file-specific entries, leaving just the items that operate on
373 handles themselves. Split the close operation into shared and
374 private parts: shared close is called by the daemon.
376 * handles.c: As above, but also pass handle allocation, ref and
377 unref operations to the daemon. Populate the handle_ops array at
378 compile time, because the daemon needs to call ops on handles too.
379 Don't bother to track open handle counts any more, the daemon does
383 * thread-private.h: As above, but also make the thread data
386 * shared.c: Fork a handle daemon if the calling process created
387 the shared memory segment.
392 * Makefile.am: Build a daemon to manage handle allocation and
393 destruction without needing to lock the shared memory
395 2002-04-30 Jeffrey Stedfast <fejj@ximian.com>
397 * atomic.c: Changed to use a normal mutex rather than a spinlock
398 since a lot of platforms seem to not have them :\
400 2002-04-30 Dick Porter <dick@ximian.com>
402 * Completely rewrote the handle waiting code: removed the helper
403 thread and its attendant complexity. All handle waiting is now
404 abstracted into the WaitForSingleObject() and
405 WaitForMultipleObjects() functions.
407 * Implemented inter-process sharing of handles using sysv shared
408 memory. This makes handles even more opaque, with a handle now
409 just an index into an array.
411 2002-04-25 Dan Lewis <dihlewis@yahoo.co.uk>
413 * io.c: unitialized pointer in GetCurrentDirectory.
415 Sat Apr 20 13:37:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
417 * threads.c: destroy the mutex at thread destruction
418 (if/when thread destruction code will be actually called).
419 When protecting a tls data pointer from the gc, use also the
420 thread id in the key.
422 Wed Apr 17 18:36:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
424 * timed-thread.c: avoid race condition when setting the thread to
427 2002-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
429 * jit.h: to more #include lines to avoid breaking compilation
430 under windows when upgrading mingw and w32api to version
433 2002-04-16 Dick Porter <dick@ximian.com>
435 * atomic.h: Explanatory comment about lack of 80386 support
437 2002-04-15 Dick Porter <dick@ximian.com>
439 * atomic.h: use xaddl for InterlockedIncrement() and
440 InterlockedDecrement(). Use cmpxchgl in a loop for
441 InterlockedExchange() and InterlockedExchangePointer().
443 Mon Apr 15 13:31:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
445 * unicode.c: fix unicode_len() to not access uninitialized memory
446 (and updated to conform to mono code style).
448 Fri Mar 29 17:15:11 CET 2002 Paolo Molaro <lupus@ximian.com>
450 * io.c: EEXISTS is ignored for directory creation.
451 * mono-mutex.h: remove silly "pragma }" that emacs users insert
452 because they use a broken editor:-)
454 2002-03-28 Dick Porter <dick@ximian.com>
460 * handles.c: Warning cleanups
462 2002-03-27 Dan Lewis <dihlewis@yahoo.co.uk>
464 * unicode.h, unicode.c: changed to gunichar2
465 * io.h, io.c: changed strings to gunichar2*, added
466 SetFileAttributes(), GetCurrentDirectory(), SetCurrentDirectory(),
467 some fixes to FindFirstFile() and friends.
469 2002-03-26 Dick Porter <dick@ximian.com>
471 * types.h: Implement the large integer struct
474 * timefuncs.c: Dummy functions that don't yet implement
475 QueryPerformanceCounter() and QueryPerformanceFrequency()
478 * threads.c: Implement SleepEx()
481 * system.c: Beginnings of GetSystemInfo()
483 * mono-mutex.c (pthread_mutex_timedlock): Fix a ms/ns conversion
487 * context.c: Dummy function that doesnt yet implement
491 * atomic.c: Interlocked functions
493 Mon Mar 25 13:01:40 CET 2002 Paolo Molaro <lupus@ximian.com>
495 * threads.c: use a gc-safe hash table to store tls pointers.
497 2002-03-22 Dick Porter <dick@ximian.com>
499 * threads.c: Fix a race condition where a thread can start and
500 exit before the handle has been properly initialised (no reason
501 why the handle couldn't be initialised beforehand, so do so)
503 Fix a ms to ns conversion magnitude thinko.
505 2002-03-21 Dick Porter <dick@ximian.com>
507 * semaphores.c: Fix a problem when waiting for one or more
508 semaphores, and another semaphore is Released (all waiting
509 semaphores assumed they were signalled)
511 2002-03-29 Dan Lewis <dihlewis@yahoo.co.uk>
513 * io.h, io.c, uglify.h: added MoveFile, CopyFile, CreateDirectory,
514 RemoveDirectory, GetFileAttributes, GetFileAttributesEx
516 2002-03-19 Dietmar Maurer <dietmar@ximian.com>
518 * threads.c (Sleep): bug fix: 1ms == 1000000ns
520 2002-03-19 Dan Lewis <dihlewis@yahoo.co.uk>
522 * io.h, io.c, events.c, mutexes.c, semaphores.c, sockets.c,
523 threads.c, io.c: added flush method to handles.
525 * io.c: FlushFileBuffers() and FindFirstFile() functions.
527 Thu Mar 7 17:21:52 CET 2002 Paolo Molaro <lupus@ximian.com>
529 * threads.c, timed-thread.c, wait.c: Boehm-GC anable.
531 2002-02-20 Dick Porter <dick@ximian.com>
533 * io-layer.h: Always build without cygwin support on windows
535 Mon Feb 18 15:50:59 CET 2002 Paolo Molaro <lupus@ximian.com>
537 * sockets.c: #undef DEBUG.
539 2002-02-14 Jeffrey Stedfast <fejj@ximian.com>
541 * io-layer.h: conditionally include sys/filio.h and sys/sockio.h
542 for FIONBIO, FIONREAD, and SIOCATMARK.
544 2002-02-14 Jeffrey Stedfast <fejj@ximian.com>
546 * sockets.c: conditionally include sys/filio.h and sys/sockio.h
547 for FIONBIO, FIONREAD, and SIOCATMARK.
549 2002-02-13 Dick Porter <dick@ximian.com>
551 * sockets.c: Implement shutdown and select
553 2002-02-13 Jeffrey Stedfast <fejj@ximian.com>
555 * mono-mutex.[c,h]: New source files that thinly wrap all pthread
556 functions that take pthread_mutex_t and/or pthread_mutexattr_t
557 arguments for the sake of portability. Implements recursive
558 mutexes and pthread_mutex_timedlock.
560 * critical-sections.c:
567 * wait.c: Use the mono-mutex wrapper portability functions/macros.
569 * pthread-compat.[c,h]: Replaced by mono-mutex.[c,h]
571 2002-01-23 Dick Porter <dick@ximian.com>
573 * sockets.c: Networking support, mostly wrapping BSD socket APIs
574 with handle code, and translating errno into w32 error codes.
576 * macros.h: Some w32 macros used with the socket support
578 * error.c: Implemented GetLastError() and SetLastError()
580 * Makefile.am: Added sockets, with kludge to override some symbols
582 2001-12-17 Dietmar Maurer <dietmar@ximian.com>
584 * unicode.c (_wapi_unicode_to_utf8): byteswap UTF16 strings before
585 passing them to iconv
586 (_wapi_unicode_to_utf8): only swap bytes on LE systems, remove bug
587 from previous commit.
589 2001-12-11 Dick Porter <dick@ximian.com>
591 * io.c: Implement DeleteFile(), GetFileTime(), SetFileTime() and
592 FileTimeToSystemTime().
594 * unicode.c (unicode_len): Nasty way of finding length of unicode
595 string with embedded NULLs (counts until two NULLs together).
597 * mutexes.c (mutex_close):
598 * events.c (event_close): Release the internal pthreads resources
600 2001-11-26 Dick Porter <dick@ximian.com>
602 * critical-sections.c:
610 * wait.c: turn off DEBUG messages
612 2001-11-22 Dick Porter <dick@ximian.com>
614 * handles.c (SignalObjectAndWait): Implement
616 * wait.c (WaitForSingleObject): Fix case where timeout == 0
622 * events.c: Support for SignalObjectAndWait
624 2001-11-21 Dick Porter <dick@ximian.com>
631 * wait.c: Reliable method of returning which handle was signalled
632 on return from WaitForMultipleObjects().
634 2001-11-21 Dick Porter <dick@ximian.com>
636 * events.c: Implement events
638 2001-11-15 Dick Porter <dick@ximian.com>
640 * mutexes.c: Implement mutexes
644 * misc.c: Factor out some common code
646 2001-11-13 Dick Porter <dick@ximian.com>
648 * threads.c: Implement TLS. Implement GetCurrentThreadId(), and
649 GetCurrentThread() by maintaining a hash of thread handles.
651 * threads.h: Define thread and process creation flags
653 2001-11-12 Dick Porter <dick@ximian.com>
655 * critical-sections.c: Implement critical sections
657 2001-11-12 Dick Porter <dick@ximian.com>
659 * semaphores.c: Implement semaphores
661 * wait.c (wait_for_item): Maintain a wait count rather than count
664 * threads.c (thread_wait_multiple): Don't lock the wait item, that
665 will block other wait threads
667 2001-11-11 Dick Porter <dick@ximian.com>
669 * Makefile.am: Rename some automake variables
670 (from Nick Drochak <ndrochak@gol.com>)
672 2001-11-10 Dick Porter <dick@ximian.com>
674 * Makefile.am (libwapiincludedir): Fix include destination
676 * .cvsignore: Ignore generated files
678 2001-11-10 Dietmar Maurer <dietmar@ximian.com>
680 * pthread-compat.c: added some include files to make it compile on
683 2001-11-08 Dick Porter <dick@ximian.com>
687 This is a library emulating the win32 threading and IO API.