1 2002-08-02 Dick Porter <dick@ximian.com>
3 * io.c (GetStdHandle): Add a handle reference when returning a
4 duplicate console handle. This fixes the unref_handle errors in
7 2002-08-01 Dietmar Maurer <dietmar@ximian.com>
9 * threads.c (TLS_PTHREAD_MUTEX): define this because else some
12 2002-08-01 Dick Porter <dick@ximian.com>
14 * threads.c: Use atomic spinlocks in TLS functions
17 * Makefile.am: Added mono-spinlock.h
19 2002-07-21 Jeffrey Stedfast <fejj@ximian.com>
21 * daemon-messages.c: #include <sys/types.h> and <sys/sockets.h> -
22 these are needed for sendmsg() and also for struct msghdr (at
23 least on Solaris). Solaris still won't build because struct msghdr
24 doesn't have msg_flags, msg_control, or msg_controllen members.
25 (CMSG_SPACE): Define for systems that don't have it.
28 2002-07-20 Dick Porter <dick@ximian.com>
34 * handles.c: Implemented pipe handles
37 * daemon.c: Fixed bug in handle closing.
40 * daemon.c: Forked processes now close all open file descriptors.
42 Fri Jul 19 19:05:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
44 * sockets.h, io-layer.h, critical-sections.h: don't include config.h
47 2002-07-19 Martin Baulig <martin@gnome.org>
49 * threads.c (ExitThread): Call exit() if no threads has been
52 2002-07-17 Dick Porter <dick@ximian.com>
54 * daemon-messages.c: Freebsd fixes from Andreas Kohn
55 <andreas.kohn@gmx.net>
57 2002-07-15 Dick Porter <dick@ximian.com>
59 * io.c: Removed bogus console_flush() method, that was just cut
60 and pasted from file_flush when I separated the two handle types.
62 2002-07-12 Dick Porter <dick@ximian.com>
64 * io.c (convert_from_flags): Fixed misunderstanding wrt fcntl
65 flags. Fixes bug 27633.
67 2002-07-12 Dick Porter <dick@ximian.com>
71 * daemon.c: Use size of sockaddr_un.sun_path from config.h
73 2002-07-12 Dick Porter <dick@ximian.com>
75 * processes.c (CreateProcess): Send stdin, stdout and stderr
76 handles if the startup info doesnt specify new ones
78 * io.c (GetStdHandle): Return the same handle when the same
79 standard handle is requested
81 * handles.c: Pass file descriptors when forking
83 * daemon.c: Use supplied file descriptors when forking a new
87 * daemon-messages.c: Pass stdin, stdout and stderr file
88 descriptors to the daemon (used when forking)
90 2002-07-11 Miguel de Icaza <miguel@ximian.com>
92 * daemon.c (_wapi_daemon_main): Use sizeof
93 (main_socket_address.sun_path) instead of hardcoded 108 value.
95 * handles.c (shared_init): Use sizeof
96 (shared_socket_address.sun_path) instead of hardcoded 108 value.
98 2002-07-10 Dennis Haney <davh@davh.dk>
102 * daemon.c: Lots of documentation, some added error checking, and
103 code readability improvements.
105 * daemon-messages.h: Add the Error request type to improve error
108 * daemon-messages.c: Do a bit more error checking on send() and
109 recv(), and log errors with a higher severity level.
111 2002-07-04 Dick Porter <dick@ximian.com>
113 * daemon.c (process_process_fork): Fix argument handling, due to
114 buggy understanding of g_strsplit() behaviour.
116 2002-07-03 Dick Porter <dick@ximian.com>
119 * threads.c: Implement OpenThread(). Define access-control values
125 * Makefile.am: Added access.h, to hold shared access-control
128 2002-07-02 Dick Porter <dick@ximian.com>
130 * wapi-private.h (_WAPI_HANDLE_VERSION): New protocol version
132 2002-07-02 Dick Porter <dick@ximian.com>
134 * handles.c (shared_init): Make a second attempt to contact the
135 daemon if the shared memory attach succeeds, but the connect()
136 fails. (This copes with the daemon crashing without cleaning up
142 * shared.c (_wapi_shm_attach): Don't exec() anything when we fork
143 the daemon, it's now built into the library.
145 2002-06-25 Dick Porter <dick@ximian.com>
150 * daemon.c: Process forking and handle data management
154 * processes.c: Process forking and other support functions
156 2002-06-25 Dick Porter <dick@ximian.com>
158 * versioninfo.h: PE resource decoding
160 * unicode.c (_wapi_unicode_to_utf8): g_utf16_to_utf8 doesnt need
161 to be told the string length
163 * io.c: Removed the ACTUALLY_DO_UNICODE option. Fixed some leaks.
164 Moved _wapi_time_t_to_filetime and the WapiFileTime typedef to
167 2002-06-12 Dick Porter <dick@ximian.com>
170 * daemon-messages.c: Handle SIGPIPE in a non-stupid way in the
171 daemon, if MSG_NOSIGNAL isn't available. Thanks to Jaroslaw
172 Kowalski <jarek@atm.com.pl> for pointing out the bogosity.
174 2002-06-10 Jaroslaw Kowalski <jarek@atm.com.pl>
176 * sockets.c, daemon-messages.c: Prevent SIGPIPE from being raised
177 when writing to a closed socket.
179 2002-06-08 Jeffrey Stedfast <fejj@ximian.com>
181 * mono-mutex.c (mono_once): New convenience function for my
186 * critical-sections.c:
194 * atomic.c: Use mono_once() rather than pthread_once().
196 2002-06-06 Jeffrey Stedfast <fejj@ximian.com>
198 * handles.c (_wapi_handle_new): pthread_once() is not atomic, so
199 if multiple threads all try to call _wapi_handle_new() before the
200 shared data has been initialized, it is possible that we could get
201 into a condition where shared_init() is being executed and later
202 threads will pass by pthread_once() due to the fact that it has
203 already been called and so therefor will attempt to use the shared
204 data before it has been completely initialized. If we instead use
205 a standard mutex locking mechanism around shared_init(), we can
206 avoid the situation entirely. By wrapping the mutex locking in a
207 check to see if we've already initialized the data, we can even
208 avoid wasting resources by having to lock/unlock the mutex in any
209 later calls (the only time we'd have to worry about
210 locking/unlocking is the initial race to call shared_init() at
213 Sat Jun 1 13:27:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
215 * atomic.h: inline asm fixes from Dennis Haney (davh@davh.dk).
217 Fri May 31 16:21:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
219 * daemon.c, handles.c: rename "sun" local var since it's apparently
220 a #define on Solaris.
222 Fri May 31 15:40:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
224 * daemon-messages.c: work-around MSG_NOSIGNAL missing on some
227 2002-05-15 Dick Porter <dick@ximian.com>
229 * wait.c: Fix a deadlock in WaitForMultipleObjects
231 2002-05-14 Dick Porter <dick@ximian.com>
233 * io.c: Fix a cut&paste error, found by
234 Jaroslaw Kowalski <jarek@atm.com.pl>
236 2002-05-10 Dan Lewis <dihlewis@yahoo.co.uk>
240 2002-05-09 Dick Porter <dick@ximian.com>
248 * Makefile.am: Remove now-unused file wait-private.h
250 2002-05-08 Dick Porter <dick@ximian.com>
252 * shared.c: Better error messages, and report when daemon
253 connection fails rather than blocking forever. Do some more
254 shared memory sanity checking.
256 * handles.c: Better error messages when connecting to shared
257 memory and the handle daemon. Fall back to non-shared handles if
258 an error occurs. Set the default back to 'shared handles'. Fix a
259 crashing bug in scratch space allocation that mangled the block
262 2002-05-07 Miguel de Icaza <miguel@ximian.com>
264 * handles.c (shared_init): Disable SHM for now, people have too
265 many problems with this, and the diagnostics are not helping.
267 2002-05-06 Dan Lewis <dihlewis@yahoo.co.uk>
269 * io.c: CreateFile sets win32 last error.
271 2002-05-05 Dick Porter <dick@ximian.com>
282 * semaphore-private.h:
286 * event-private.h: Simplify the WapiHandleOps struct: take out all
287 the file-specific entries, leaving just the items that operate on
288 handles themselves. Split the close operation into shared and
289 private parts: shared close is called by the daemon.
291 * handles.c: As above, but also pass handle allocation, ref and
292 unref operations to the daemon. Populate the handle_ops array at
293 compile time, because the daemon needs to call ops on handles too.
294 Don't bother to track open handle counts any more, the daemon does
298 * thread-private.h: As above, but also make the thread data
301 * shared.c: Fork a handle daemon if the calling process created
302 the shared memory segment.
307 * Makefile.am: Build a daemon to manage handle allocation and
308 destruction without needing to lock the shared memory
310 2002-04-30 Jeffrey Stedfast <fejj@ximian.com>
312 * atomic.c: Changed to use a normal mutex rather than a spinlock
313 since a lot of platforms seem to not have them :\
315 2002-04-30 Dick Porter <dick@ximian.com>
317 * Completely rewrote the handle waiting code: removed the helper
318 thread and its attendant complexity. All handle waiting is now
319 abstracted into the WaitForSingleObject() and
320 WaitForMultipleObjects() functions.
322 * Implemented inter-process sharing of handles using sysv shared
323 memory. This makes handles even more opaque, with a handle now
324 just an index into an array.
326 2002-04-25 Dan Lewis <dihlewis@yahoo.co.uk>
328 * io.c: unitialized pointer in GetCurrentDirectory.
330 Sat Apr 20 13:37:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
332 * threads.c: destroy the mutex at thread destruction
333 (if/when thread destruction code will be actually called).
334 When protecting a tls data pointer from the gc, use also the
335 thread id in the key.
337 Wed Apr 17 18:36:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
339 * timed-thread.c: avoid race condition when setting the thread to
342 2002-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
344 * jit.h: to more #include lines to avoid breaking compilation
345 under windows when upgrading mingw and w32api to version
348 2002-04-16 Dick Porter <dick@ximian.com>
350 * atomic.h: Explanatory comment about lack of 80386 support
352 2002-04-15 Dick Porter <dick@ximian.com>
354 * atomic.h: use xaddl for InterlockedIncrement() and
355 InterlockedDecrement(). Use cmpxchgl in a loop for
356 InterlockedExchange() and InterlockedExchangePointer().
358 Mon Apr 15 13:31:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
360 * unicode.c: fix unicode_len() to not access uninitialized memory
361 (and updated to conform to mono code style).
363 Fri Mar 29 17:15:11 CET 2002 Paolo Molaro <lupus@ximian.com>
365 * io.c: EEXISTS is ignored for directory creation.
366 * mono-mutex.h: remove silly "pragma }" that emacs users insert
367 because they use a broken editor:-)
369 2002-03-28 Dick Porter <dick@ximian.com>
375 * handles.c: Warning cleanups
377 2002-03-27 Dan Lewis <dihlewis@yahoo.co.uk>
379 * unicode.h, unicode.c: changed to gunichar2
380 * io.h, io.c: changed strings to gunichar2*, added
381 SetFileAttributes(), GetCurrentDirectory(), SetCurrentDirectory(),
382 some fixes to FindFirstFile() and friends.
384 2002-03-26 Dick Porter <dick@ximian.com>
386 * types.h: Implement the large integer struct
389 * timefuncs.c: Dummy functions that don't yet implement
390 QueryPerformanceCounter() and QueryPerformanceFrequency()
393 * threads.c: Implement SleepEx()
396 * system.c: Beginnings of GetSystemInfo()
398 * mono-mutex.c (pthread_mutex_timedlock): Fix a ms/ns conversion
402 * context.c: Dummy function that doesnt yet implement
406 * atomic.c: Interlocked functions
408 Mon Mar 25 13:01:40 CET 2002 Paolo Molaro <lupus@ximian.com>
410 * threads.c: use a gc-safe hash table to store tls pointers.
412 2002-03-22 Dick Porter <dick@ximian.com>
414 * threads.c: Fix a race condition where a thread can start and
415 exit before the handle has been properly initialised (no reason
416 why the handle couldn't be initialised beforehand, so do so)
418 Fix a ms to ns conversion magnitude thinko.
420 2002-03-21 Dick Porter <dick@ximian.com>
422 * semaphores.c: Fix a problem when waiting for one or more
423 semaphores, and another semaphore is Released (all waiting
424 semaphores assumed they were signalled)
426 2002-03-29 Dan Lewis <dihlewis@yahoo.co.uk>
428 * io.h, io.c, uglify.h: added MoveFile, CopyFile, CreateDirectory,
429 RemoveDirectory, GetFileAttributes, GetFileAttributesEx
431 2002-03-19 Dietmar Maurer <dietmar@ximian.com>
433 * threads.c (Sleep): bug fix: 1ms == 1000000ns
435 2002-03-19 Dan Lewis <dihlewis@yahoo.co.uk>
437 * io.h, io.c, events.c, mutexes.c, semaphores.c, sockets.c,
438 threads.c, io.c: added flush method to handles.
440 * io.c: FlushFileBuffers() and FindFirstFile() functions.
442 Thu Mar 7 17:21:52 CET 2002 Paolo Molaro <lupus@ximian.com>
444 * threads.c, timed-thread.c, wait.c: Boehm-GC anable.
446 2002-02-20 Dick Porter <dick@ximian.com>
448 * io-layer.h: Always build without cygwin support on windows
450 Mon Feb 18 15:50:59 CET 2002 Paolo Molaro <lupus@ximian.com>
452 * sockets.c: #undef DEBUG.
454 2002-02-14 Jeffrey Stedfast <fejj@ximian.com>
456 * io-layer.h: conditionally include sys/filio.h and sys/sockio.h
457 for FIONBIO, FIONREAD, and SIOCATMARK.
459 2002-02-14 Jeffrey Stedfast <fejj@ximian.com>
461 * sockets.c: conditionally include sys/filio.h and sys/sockio.h
462 for FIONBIO, FIONREAD, and SIOCATMARK.
464 2002-02-13 Dick Porter <dick@ximian.com>
466 * sockets.c: Implement shutdown and select
468 2002-02-13 Jeffrey Stedfast <fejj@ximian.com>
470 * mono-mutex.[c,h]: New source files that thinly wrap all pthread
471 functions that take pthread_mutex_t and/or pthread_mutexattr_t
472 arguments for the sake of portability. Implements recursive
473 mutexes and pthread_mutex_timedlock.
475 * critical-sections.c:
482 * wait.c: Use the mono-mutex wrapper portability functions/macros.
484 * pthread-compat.[c,h]: Replaced by mono-mutex.[c,h]
486 2002-01-23 Dick Porter <dick@ximian.com>
488 * sockets.c: Networking support, mostly wrapping BSD socket APIs
489 with handle code, and translating errno into w32 error codes.
491 * macros.h: Some w32 macros used with the socket support
493 * error.c: Implemented GetLastError() and SetLastError()
495 * Makefile.am: Added sockets, with kludge to override some symbols
497 2001-12-17 Dietmar Maurer <dietmar@ximian.com>
499 * unicode.c (_wapi_unicode_to_utf8): byteswap UTF16 strings before
500 passing them to iconv
501 (_wapi_unicode_to_utf8): only swap bytes on LE systems, remove bug
502 from previous commit.
504 2001-12-11 Dick Porter <dick@ximian.com>
506 * io.c: Implement DeleteFile(), GetFileTime(), SetFileTime() and
507 FileTimeToSystemTime().
509 * unicode.c (unicode_len): Nasty way of finding length of unicode
510 string with embedded NULLs (counts until two NULLs together).
512 * mutexes.c (mutex_close):
513 * events.c (event_close): Release the internal pthreads resources
515 2001-11-26 Dick Porter <dick@ximian.com>
517 * critical-sections.c:
525 * wait.c: turn off DEBUG messages
527 2001-11-22 Dick Porter <dick@ximian.com>
529 * handles.c (SignalObjectAndWait): Implement
531 * wait.c (WaitForSingleObject): Fix case where timeout == 0
537 * events.c: Support for SignalObjectAndWait
539 2001-11-21 Dick Porter <dick@ximian.com>
546 * wait.c: Reliable method of returning which handle was signalled
547 on return from WaitForMultipleObjects().
549 2001-11-21 Dick Porter <dick@ximian.com>
551 * events.c: Implement events
553 2001-11-15 Dick Porter <dick@ximian.com>
555 * mutexes.c: Implement mutexes
559 * misc.c: Factor out some common code
561 2001-11-13 Dick Porter <dick@ximian.com>
563 * threads.c: Implement TLS. Implement GetCurrentThreadId(), and
564 GetCurrentThread() by maintaining a hash of thread handles.
566 * threads.h: Define thread and process creation flags
568 2001-11-12 Dick Porter <dick@ximian.com>
570 * critical-sections.c: Implement critical sections
572 2001-11-12 Dick Porter <dick@ximian.com>
574 * semaphores.c: Implement semaphores
576 * wait.c (wait_for_item): Maintain a wait count rather than count
579 * threads.c (thread_wait_multiple): Don't lock the wait item, that
580 will block other wait threads
582 2001-11-11 Dick Porter <dick@ximian.com>
584 * Makefile.am: Rename some automake variables
585 (from Nick Drochak <ndrochak@gol.com>)
587 2001-11-10 Dick Porter <dick@ximian.com>
589 * Makefile.am (libwapiincludedir): Fix include destination
591 * .cvsignore: Ignore generated files
593 2001-11-10 Dietmar Maurer <dietmar@ximian.com>
595 * pthread-compat.c: added some include files to make it compile on
598 2001-11-08 Dick Porter <dick@ximian.com>
602 This is a library emulating the win32 threading and IO API.