2005-06-05 Peter Bartok <pbartok@novell.com>
[mono.git] / mono / io-layer / ChangeLog
1 2005-05-30  Zoltan Varga  <vargaz@freemail.hu>
2
3         * atomic.h: Add IA64 atomic ops.
4
5 2005-05-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6
7         * processes.c: make ExitCode be valid even if the user didn't call
8         WaitForExit() and is just polling on HasExited.
9
10 2005-05-17  Dick Porter  <dick@ximian.com>
11
12         * io.c (file_getfilesize): Clear the error value, so that files
13         with sizes with the low bits 0xFFFFFFFF can be distinguished from
14         a genuine error.
15
16 2005-05-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17
18         * shared.c: forgot to ignore a warning.
19
20 2005-05-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21
22         * shared.c: don't display warnings after reboots.
23
24 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25
26         * sockets.c: on windows, getsockopt/setsockopt for send/receive timeout
27         use an integer in milliseconds. We were using a struct timeval.
28
29 2005-05-06  Dick Porter  <dick@ximian.com>
30
31         * handles-private.h: 
32         * mutexes.c: 
33         * wapi-private.h: 
34         * shared.h:
35         * shared.c: 
36         * wait.c: 
37         * handles.c: 
38         * collection.h: Use SysV semaphores for managing access to the
39         shared memory - in return for the ludicrous api we get
40         synchronisation primitives that can be cleaned up by the kernel
41         even when a process quits unexpectedly.  This removes the
42         timestamp issues.
43
44 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
45
46         * handles.c: Always use polling in the waits, since
47         mono_cond_timedwait can't be interruped by the thread abort signal.
48
49 2005-04-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
50
51         * events.c: calling Set on AutoResetEvent several times has the same
52         effect as calling it only once if no thread is waiting for it.
53
54 2005-04-29  Dick Porter  <dick@ximian.com>
55
56         * processes.c (EnumProcesses): Use a GArray instead of a GPtrArray
57         now it's storing pids not handles, also fixes memory leak caused
58         by unclear glib documentation.
59
60         * sockets.c (WSACleanup): Remove unused variable
61
62 2005-04-29  Dick Porter  <dick@ximian.com>
63
64         * handles.c (_wapi_handle_check_share_by_pid): For systems that
65         don't have file descriptor info in /proc check that the original
66         opener of a file is still there, if a share violation would
67         otherwise happen.
68
69 2005-04-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
70
71         * handles.c:
72         * handles-private.h: added _wapi_handle_forecch that loops through all
73         the handles and call a callback function when a handle of the given
74         type is found.
75
76         * sockets.c: no need to keep open sockets in an array, as we have them 
77         in the handles structure.
78
79         Fixes bug #74755.
80
81 2005-04-28  Dick Porter  <dick@ximian.com>
82
83         * processes.c: Cope with handles that are only around for as long
84         as the search is running.  If we're searching for process handles,
85         check to see if the process is still running and signal it if not.
86
87         * handles.c (_wapi_search_handle): Search in the shared space as
88         well.  Fixed bug 74752.
89
90         * mutexes.c:
91         * handles.c (_wapi_handle_new_from_offset):
92         _wapi_handle_new_for_existing_ns () was doing exactly the same as
93         this, so deleted it.
94
95 2005-04-26  Dick Porter  <dick@ximian.com>
96
97         * handles.c: Fix stupid thinko where if a new shared handle is
98         created but a collection was needed to free some space, it
99         returned an error anyway.  Should fix the messages shown in bug
100         74659.
101
102 2005-04-25  Dick Porter  <dick@ximian.com>
103
104         * handles.c (_wapi_handle_check_share): Only consider mono
105         processes when looking to see if a file is still being held open,
106         while checking share permissions.
107
108 2005-04-25  Dick Porter  <dick@ximian.com>
109
110         * sockets.c: 
111         * io.c: 
112         * wapi-private.h (struct _WapiHandleOps): 
113         * handles.c (_wapi_handle_unref): When destroying handles, save
114         the handle data and call the close function only after the array
115         slot has been cleared.  This prevents race conditions with file
116         descriptors, fixing bug 74713.
117
118         * mutexes.c: Delete the handle close functions, they didn't do
119         anything anyway
120
121         * error.c (_wapi_get_win32_file_error): Add a mapping for EINTR so
122         the "Unknown error" g_warning doesn't get displayed.
123
124 2005-04-25  Dick Porter  <dick@ximian.com>
125
126         * wapi-private.h: 
127         * threads.c: Make thread handles process-private for now to take
128         some of the space pressure off the shared memory, while I work on
129         a real fix.
130
131 2005-04-21  Dick Porter  <dick@ximian.com>
132
133         * handles.c (_wapi_handle_check_share): Make sure there is a "fd"
134         dir in /proc before blowing away handle info.  Fixes bug 74649.
135
136 2005-04-21  Dick Porter  <dick@ximian.com>
137
138         * wait.c (WaitForMultipleObjectsEx): Implement special waits
139
140         * handles.c (_wapi_handle_wait_signal_poll_share): Don't return a
141         timeout, just wait briefly for the private signals and let the
142         waiting thread test again.  This prevents us missing shared
143         signals.
144
145 2005-04-21  Dick Porter  <dick@ximian.com>
146
147         * collection.h (_WAPI_HANDLE_COLLECTION_EXPIRED_INTERVAL): Reduce
148         the time before a slot is considered too old and deleted.  This is
149         a workaround while I come up with a proper fix.
150
151 2005-04-21  Dick Porter  <dick@ximian.com>
152
153         * mutexes.c: 
154         * processes.c: 
155         * threads.c: 
156         * handles.c (_wapi_handle_new): Turn assertions into errors.
157
158         * collection.c (_wapi_handle_collect): Use symbols not magic
159         numbers for timeout values
160
161 2005-04-19  Dick Porter  <dick@ximian.com>
162
163         * mutexes.c: 
164         * wait.c: 
165         * handles.c (_wapi_handle_count_signalled_handles)
166         * handles-private.h (_wapi_handle_shared_lock_handle): Use new
167         shared handle locks in critical sections.
168
169         * handles.c (_wapi_handle_new_for_existing_ns): Reuse old handles
170         if there is already one there.
171         
172         * handles.c (_wapi_handle_ref): It was possible for a process to
173         exit before getting around to updating shared handle timestamps,
174         so do it here too.
175
176 Tue Apr 19 16:25:47 CEST 2005 Paolo Molaro <lupus@ximian.com>
177
178         * threads.c: fix lookup of the thread id in the has table:
179         always use the id value, not the pointer to the id.
180
181 2005-04-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
182
183         * handles.c: fix handle returned in _wapi_handle_search_handle. Dick
184         pointed it out.
185
186 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
187
188         * io-layer/sockets.c: FIONBIO with a TRUE argument means we want
189         non-blocking IO, not the other way around.
190
191 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
192
193         * handles.c:
194         * io.c:
195         * handles-private.h: GetFileType wasn't checking if we have memory
196         allocated for the handle before dereferencing it. Fixes a FileStream
197         nunit test.
198
199 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
200
201         * handles.c:
202         * processes.c:
203         * handles-private.h: we were calling g_renew to expand the handle array,
204         but that might move the memory and we might have pthread conditions or
205         mutexes in the original memory area that are being used. Now instead of
206         expanding an existing array, we just create new ones and keep a list of
207         them. Access to _wapi_private_handles had to be modified accordingly.
208
209 2005-04-15  Dick Porter  <dick@ximian.com>
210
211         * collection.c: FreeBSD needs more than PTHREAD_STACK_MIN
212
213 2005-04-14  Raja R Harinath  <rharinath@novell.com>
214
215         * wapi-private.h: Remove reference to 'daemon-private.h'.
216
217 Wed Apr 13 13:12:33 EDT 2005 Paolo Molaro <lupus@ximian.com>
218
219         * atomic.h: applied patch from mass@akuma.org (David Waite)
220         to fix InterlockedExchangeAdd.
221         Fixed a few other functions, including InterlockedCompareExchange()
222         which was miscompiled by gcc with optimizations enabled.
223
224 2005-04-13  Dick Porter  <dick@ximian.com>
225
226         * io.c (share_check): 
227         * handles.c (_wapi_handle_check_share): Refine the file check so
228         that sharing violations within the same process don't cause
229         assertion failures.
230
231 2005-04-13  Dick Porter  <dick@ximian.com>
232
233         * io.c (FindFirstFile): Fix bugs introduced with the merge (bug
234         74586)
235
236 2005-04-12  Dick Porter  <dick@ximian.com>
237         
238         The daemon-less io-layer.  Extensive lowlevel changes in
239         handles.c, requiring some corresponding changes in other files
240         calling these functions.  Private_foo structures have been
241         eliminated.
242
243         File descriptor handling differences account for most of the
244         changes in io.c and sockets.c.
245
246         Other highlights:
247         
248         * mutexes.c: Named mutexes are now a distinct type.
249         * atomic.h: Fix a PPC uninitialised variable warning.
250         * wait.c: Check conditions before waiting on a condition variable.
251         * processes.c: Handle process fork and wait without a daemon
252         (though this has the limitation of only being able to wait for
253         child processes.)
254
255 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
256
257         * io-private.h:
258         * threads.c:
259         * threads.h:
260         * io.c:
261         * sockets.c:
262         * sockets.h: removed dead code that deals with async IO.
263
264 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
265
266         * atomic.c (InterlockedIncrement): Fix fallback implementation of
267         InterlockedIncrement and InterlockedDecrement. Fixes #74228.
268
269 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
270
271         * io-layer.h: Add required header files for compiling with VS.NET.
272
273 2005-03-17 Miguel de Icaza <miguel@novell.com>
274
275         * io.c: don't fail on NFS when there are no more locks available.
276
277 2005-03-09  Dick Porter  <dick@ximian.com>
278
279         * error.c (_wapi_get_win32_file_error): ENFILE and EMFILE should
280         map to ERROR_TOO_MANY_OPEN_FILES, not ERROR_NO_MORE_FILES.  Fixes
281         bug 72671.
282
283 2005-03-09  Dick Porter  <dick@ximian.com>
284
285         * daemon.c (process_process_fork): Initialise the handle data
286         before using it in the error case.  This is probably the error
287         we're working around in the previous change.  Spotted by Taru Jain
288         <tjain@novell.com> and Hemanth Yamijala <YHemanth@novell.com>.
289
290 2005-03-07  Dick Porter  <dick@ximian.com>
291
292         * daemon.c: It looks like g_shell_parse_argv() can return
293         argv[0]=NULL somehow, yet still not give an error.  Make sure we
294         don't pass NULL to strrchr(), working around a segfault that
295         showed up on ZLM testing.
296
297 2005-03-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
298
299         * sockets.c: translate EINPROGRESS to EWOULDBLOCK in connect. This is
300         the expected error code showed by the test case in bug #73053.
301
302 2005-02-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
303
304         * io.c: another leftover.
305
306 Fri Feb 18 17:37:29 CET 2005 Paolo Molaro <lupus@ximian.com>
307
308         * io.c: fixed logic in checking errno in rev 40815.
309
310 Fri Feb 18 16:00:29 CET 2005 Paolo Molaro <lupus@ximian.com>
311
312         * threads.c: we don't depend on the GC checking tls
313         slots anymore.
314         * processes.c: remove unused ref to GC headers.
315
316 Thu Feb 17 19:57:11 CET 2005 Paolo Molaro <lupus@ximian.com>
317
318         * io.c: remove _wapi_thread_cur_apc_pending () checks
319         when the siscall should return immediatly and handle
320         the case when a syscall is interrupted without
321         erroring out, but returning a 0 read/write if possible.
322         Still the cases of read from file need to be handled.
323
324 Tue Feb 8 18:28:11 CET 2005 Paolo Molaro <lupus@ximian.com>
325
326         * threads.c: make people test with 1 MB stack per thread.
327
328 2005-01-17  Dick Porter  <dick@ximian.com>
329
330         * timefuncs.h: Make WapiFileTime endian-aware, as it's often
331         cast to and from 64bit ints.  Fixes bug 71213.
332
333 2005-01-11  Dick Porter  <dick@ximian.com>
334
335         * error.c (errno_to_WSA): Add EADDRNOTAVAIL error code
336         translation.
337
338 Mon Jan 10 16:15:19 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
339
340         * atomic.h: Fix functions on s390.
341
342 Mon Jan 10 20:30:19 CET 2005 Paolo Molaro <lupus@ximian.com>
343
344         * atomic.h: fix some functions on ppc (tests/interlocked.cs).
345
346 2005-01-10  Dick Porter  <dick@ximian.com>
347
348         * misc.c (_wapi_calc_timeout): Guard against overflow when
349         calculating timeouts.  This makes waiting with a large
350         (Int32.MaxValue) timeout not return immediately.
351
352 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
353
354         * io.c (io_ops): make this `const' so it is shareable (well, only
355         really shareable if it is statically linked...)
356
357 Mon Dec 20 11:58:33 CET 2004 Paolo Molaro <lupus@ximian.com>
358
359         * threads.c, threads.h: add accessor to get the pthread_key_t for
360         a tls id.
361
362 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
363
364         * io.c: check for the existence of 'dest' and set ERROR_ALREADY_EXISTS
365         if it exists and is not the same as 'src'.
366
367 2004-12-01 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
368
369         * atomic.h : Fix InterlockedCompareExchange for s390/s390x.
370
371 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
372
373         * processes.c: unquote the cmd path, allow for ' or " when quoting and
374         pass the quoted program name to the daemon, otherwise the call to
375         g_shell_unquote in the daemon will break things up.
376
377 2004-10-14  Dick Porter  <dick@ximian.com>
378
379         * sockets.c (_wapi_accept): Revert the previous change.  We now
380         set the accepted socket to have the same blocking status as the
381         listening socket in managed code.  This follows MS behaviour.
382         
383 2004-10-14  Dick Porter  <dick@ximian.com>
384
385         * sockets.c (_wapi_accept): On Darwin, make sure a newly
386         accept()ed socket is blocking.  Fixes bug 67355, patch by
387         grompf@sublimeintervention.com.
388
389 2004-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
390
391         * system.c: check the number of online processors instead of the
392         existing ones. Sanitize return value if it's an error.
393
394 2004-10-03 Ben Maurer  <bmaurer@ximian.com>
395
396         * system.c: Add support for getting the # of cpus.
397
398 2004-09-28  Dick Porter  <dick@ximian.com>
399
400         * io.c (pipe_close_private): Fix one small typo in the last change
401         that totally hosed process creation with redirected pipes.
402
403 2004-09-24  Dick Porter  <dick@ximian.com>
404
405         * wapi-private.h: 
406         * sockets.c: 
407         * socket-private.h: 
408         * io.c: 
409         * io-private.h: 
410         * handles-private.h: Cope when a file descriptor is reused while
411         the handle that thought it owned it is still referenced, instead
412         of asserting.  Probably fixes bug 66479, though we've been unable
413         to reproduce it.
414
415 2004-09-09  Dick Porter  <dick@ximian.com>
416
417         * error.c:
418         * io.c: Set error codes everywhere.
419
420 2004-09-06  Dick Porter  <dick@ximian.com>
421
422         * handles.c (_wapi_handle_unref): Reset the private record's type
423         (CloseHandle): Check for a fd mapping failure, and return FALSE.
424         (_wapi_handle_process_fork): Fix long-standing bug in checking
425         handle return values.  Also do the required bookkeeping with the
426         new process's handles.
427
428         * daemon.c: When creating a new process's handles, check whether
429         the shared space needs to be increased
430
431 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
432
433         * shared.c (_wapi_shm_file): Fix leaking of filename.
434
435 2004-08-19  Dick Porter  <dick@ximian.com>
436
437         * handles.c (_wapi_handle_count_signalled_handles): Fix thinko
438         introduced with the fd offset stuff: unlock handles properly when
439         backing off.  Fixes the monologue hang at exit.
440
441 2004-08-18  Dick Porter  <dick@ximian.com>
442
443         * sockets.c: 
444         * io.c: Check that new fds fit in the table, return error if not
445
446         * daemon.c (_wapi_daemon_main): 
447         * handles.c (shared_init): Have all processes agree on a size for
448         the fd table.
449
450 2004-08-17  Dick Porter  <dick@ximian.com>
451
452         * daemon.c (process_new): 
453         * handles.c (_wapi_handle_new_internal): Cope when the space
454         reserved for file descriptors is larger than the shared segment
455         size.  Fixes the crash reported when running mono under gdb on
456         macosx.
457
458 2004-08-16  Dick Porter  <dick@ximian.com>
459
460         * sockets.c:
461         * io.c:
462         * handles-private.h (_wapi_handle_fd_offset_to_handle): Improve
463         error checking with passed-in file descriptors.
464
465 2004-08-11  Dick Porter  <dick@ximian.com>
466
467         * sockets.c: 
468         * io.c: Returned handle values are the file descriptor the handle
469         encapsulates
470
471         * handles.c: 
472         * handles-private.h: 
473         * daemon.c: Reserve the range of handles that can have the same
474         values as file descriptors.  These won't be used, but the values
475         will be used as file, console, pipe or socket handles.  The fd to
476         handle mapping is done internally and is invisible to users.
477         Fixes bug 61828.
478
479         * wapi-private.h (_WAPI_HANDLE_VERSION): Increment, because we now
480         reserve a chunk of handle space.
481
482 2004-08-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
483
484         * atomic.h: add support for 64-bit S/390
485
486 2004-07-22  Dick Porter  <dick@ximian.com>
487
488         * timed-thread.c: 
489         * threads.c: Move the destruction of the internal thread data to
490         after the thread has been joined.  Fixes bug 61418.
491
492 2004-07-14  Dick Porter  <dick@ximian.com>
493
494         * wait.c (test_and_own): When not waiting for all handles to
495         become signalled, only own and return the lowest.  All the
496         documentation suggests that the old way was correct, but
497         experimentation shows it actually works like this.  Patch by
498         Sébastien Robitaille
499         (sebastien.robitaille@croesus.com), fixes bug 61511.
500
501 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
502
503         * threads.c: register roots for gc
504
505 2004-07-08  Dick Porter  <dick@ximian.com>
506
507         * io.c (file_seek): If there is a high 32bit offset part, make
508         sure the low part isn't sign-extended.  Set error codes when
509         returning failure.  Fixes bug 61131.
510
511 2004-07-06  Dick Porter  <dick@ximian.com>
512
513         * io.c (file_setfiletime): Check for underflow when converting to
514         time_t values.  Set error codes when returning failure.  Fixes bug
515         60970.
516
517 2004-07-05  Dick Porter  <dick@ximian.com>
518
519         * mutexes.c (mutex_ops_init): Make the named mutex mutex sharable.
520
521         * daemon.c (unref_handle): Only destroy a handle if all processes
522         have released it, not just the current one.  Fixes bug 60887.
523
524 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
525
526         * mono-mutex.h atomic.h: Add G_GNUC_UNUSED to static inline functions
527         to prevent warnings.
528
529 2004-06-24  Dick Porter  <dick@ximian.com>
530
531         * mutexes.c: Indicate when a named mutex was reused
532
533 2004-06-24  Dick Porter  <dick@ximian.com>
534
535         * threads.c (SuspendThread): 
536         * timed-thread.c (_wapi_timed_thread_suspend): Wrap sem_wait in a
537         while loop.  See bug 58161.
538
539 Wed Jun 23 23:29:04 CEST 2004 Paolo Molaro <lupus@ximian.com>
540
541         * io.c: don't use sharemode for on-disk file permissions: it's used
542         for shared access to the open file.
543
544 2004-06-22  Dick Porter  <dick@ximian.com>
545
546         * events.c (CreateEvent): When creating an auto-reset event that
547         is initially owned, make sure the set count starts at 1.
548
549 2004-06-18  Dick Porter  <dick@ximian.com>
550
551         * event-private.h:
552         * events.c: Auto-reset events need to release one thread for each
553         time SetEvent() is called.  Fixes bug 41292.
554
555         * threads.h:
556         * mutex-private.h:
557         * mutexes.c: Scan for mutexes that are still locked by a thread
558         when it exits.  Fixes the MS demo app linked by bug 41292.
559
560         * wait.c (test_and_own): Make sure a handle is signalled before it
561         is owned.
562
563 2004-06-16  Dick Porter  <dick@ximian.com>
564
565         * timed-thread.c: Call the thread cleanup exit routine before taking
566         the join mutex, because this could deadlock if another thread tries
567         to join in the meantime.  This fixes the hang-at-exit problem seen
568         on macos.
569
570 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
571
572         * threads.c: Implemented SleepEx.
573         * threads.h: Fixed SleepEx signature.
574
575 2004-06-03  Miguel de Icaza  <miguel@ximian.com>
576
577         * threads.c: When running under valgrind, do not allocate too much
578         stack, as Valgrind default is 1 meg.
579
580 2004-05-27  Dick Porter  <dick@ximian.com>
581
582         * io.h:
583         * io.c: Implemented LockFile() and UnlockFile()
584
585 2004-05-21  Dick Porter  <dick@ximian.com>
586
587         * io.c (CreateFile): Check for existing share modes when opening
588         a file.
589
590         * handles.c: 
591         * handles-private.h: 
592         * daemon-messages.h: 
593         * daemon.c: Maintain a hash of file share modes, keying on device
594         and inode (to cope with symlinks.)
595
596 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
597
598         * daemon-messages.c: Retry if the communication with the daemon is
599           interrupted by a signal.
600         * io.c, sockets.c: Check for EINTR in every syscall that can be interrumped. 
601           Only return an error in this case if there is something in the apc queue
602           (which means that it is an interruption requested by the "user").
603         * processes.c: Use WaitForSingleObjectEx. No need to pass "alertable" as
604           true since the wait is small.
605         * shared.c: Retry write calls when interrumped by a signal.
606         * timed-thread.h, timed-thread.c: added _wapi_thread_apc_pending, which
607           returns TRUE if there are pending asynchronous calls (APC) for the
608           provided thread. Also added _wapi_thread_dispatch_apc_queue which calls
609           the enqueued APCs. Defined a new struct ApcInfo that holds information
610           about an enqueued APC.
611         * thread-private.h, threads.c: Implemented QueueUserAPC (which does the same
612           as in win32),_wapi_thread_apc_pending and _wapi_thread_dispatch_apc_queue. 
613           These last two methods call the corresponding apc methods in 
614           thread-private using the provided thread handle.
615         * threads.h: Added QueueUserAPC.
616         * uglify.h: Added WapiApcProc (needed by QueueUserAPC).
617         * wait.c, wait.h: Changed WaitForSingleObject to WaitForSingleObjectEx, and
618           WaitForMultipleObjects to WaitForMultipleObjectsEx. Implemented support
619           for APCs in those two methods and also in SleepEx.
620
621 2004-05-17  Dick Porter  <dick@ximian.com>
622
623         * io.c (CopyFile): Speed up.  Fixes bug 57859.
624
625 2004-05-13  Dick Porter  <dick@ximian.com>
626         * mono-mutex.c (mono_mutex_unlock): Return EPERM when the current
627         thread doesn't own the mutex, rather than assert()ing.
628
629 2004-05-11  Dick Porter  <dick@ximian.com>
630
631         * shared.c (_wapi_shm_attach): Cope when a previous daemon startup
632         attempt failed, leaving shared files that look like a daemon is
633         still starting.
634
635 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
636
637         * io.c:
638         (SetFileAttributes): don't the the exec bit if the corresponding read
639         bit is not set.
640
641 2004-05-10  Zoltan Varga  <vargaz@freemail.hu>
642
643         * io.c (FindFirstFile): Fix invalid free.
644
645 2004-05-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
646
647         * io.c: translate from GFileError to errno codes and don't free
648         variables right after calling mono_io_scandir, as we may overwrite
649         errno value.
650
651 2004-05-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
652
653         * io.c: g_dir_open return ENOENT for directories on which we don't have
654         read/execute permission, while returning EPERM for anything below those.
655         So, change ENOENT by EPERM if the directory exists.
656
657 2004-05-07  Dick Porter  <dick@ximian.com>
658
659         * io.c (SetFileAttributes): Don't have failed chmod()s cause a
660         "file not found" error.  Fixes bug 54032.
661         
662 2004-05-07  Dick Porter  <dick@ximian.com>
663
664         * io.c (FindFirstFile): Comment out a windows-compatibility check
665         that breaks when directories have metachars in their names.
666         Workaround for bug 58116.
667
668 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
669
670         * io.c: fixed for FindFirstFile for empty directories. Closes
671         bug #58147.
672
673 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
674
675         * processes.c: set the start time for the current process. Fixes bug
676         #58109.
677
678 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
679
680         * io-private.h: 'namelist' is now a gchar ** in _WapiHandlePrivate_find.
681         * io.c: implemented scandir using glib functions.
682
683 2004-05-04  Dick Porter  <dick@ximian.com>
684
685         * daemon.c (read_message): Return FALSE on error so the GSource
686         callback itself can return FALSE.  Cures the infinite loop poll()
687         warning on MacosX.
688         * shared.c: Fix some daemon startup race conditions.
689
690 2004-04-29  Miguel de Icaza  <miguel@ximian.com>
691
692         * io.c (CopyFile): Use 32k buffers to copy the file instead of 2k,
693         use the stack, do not use dynamic memory.
694
695 2004-04-29  Zoltan Varga  <vargaz@freemail.hu>
696
697         * io.c: Add scandir implementation for platforms which do not have
698         it, like solaris.
699
700 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
701
702         * io.[ch]: implemented GetLogicalDriveStrings.
703
704 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
705
706         * io.c:
707         * sockets.c: use the field name from configure when accessing sigval
708         pointer field. Makes this work on the Mac.
709
710 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
711
712         * atomic.c: (InterlockedExchange) fix typo for
713         mutex name
714
715 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
716
717         * io.c:
718         * sockets.c: added check for sys/aio.h.
719
720 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
721
722         * error.[ch]: added _wapi_get_win32_file_error...
723         * io.c: ... which was _wapi_get_win32_error here.
724         * sockets.c: rename the function calls here too.
725
726 2004-04-28  Dick Porter  <dick@ximian.com>
727
728         * daemon-messages.c: Avoid a deadlock when a thread is killed while
729         waiting for the daemon by using a recursive mutex.  Helps bug 56699.
730
731 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
732
733         * io.c: fixed leak in async_notifier().
734
735         * sockets.[ch]: added AIO support for sockets and fixed WSAIoctl
736         declaration.
737
738         * threads.c: removed old comment.
739
740 2004-04-26  David Waite  <mass@akuma.org>
741
742         * daemon-messages.h:
743         * daemon-private.h
744         * error.h:
745         * io.h:
746         * processes.h:
747         * shared.h:
748         * thread-private.h:
749         * wapi-private.h: remove comma from end of enumeration declarations
750         * status.h: cast unsigned int types to int for enum assignment
751
752 2004-04-26 David Waite <mass@akuma.org>
753
754         * io.c:
755         * timefuncs.c: declare 64-bit constants as long long types (i.e.
756         10ULL)
757
758 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
759
760         * socket-wrappers.h: _wapi_socket == WSASocket now. Added
761         WSA_FLAG_OVERLAPPED.
762
763         * sockets.c: new unused parameters for _wapi_socket.
764
765 2004-04-22  Miguel de Icaza  <miguel@ximian.com>
766
767         * timed-thread.c: Replace sem_init with MONO_SEM_INIT to handle
768         the fact that MacOS X is a piece of junk (sem_init is *defined* in
769         the libc, but they return `not implemented'). 
770
771 2004-04-22  Dick Porter  <dick@ximian.com>
772
773         * handles.c: 
774         * handles-private.h: Reference the handle when it is locked, so
775         that another thread can't blow it away while we're waiting for it
776         to become signalled.
777         
778         * wait.c: 
779         * timed-thread.c: 
780         * threads.c: 
781         * sockets.c: 
782         * semaphores.c: 
783         * mutexes.c: 
784         * mono-mutex.c: 
785         * io.c: 
786         * handles.c: 
787         * handles-private.h: 
788         * events.c: 
789         * error.c: 
790         * daemon-messages.c: 
791         * critical-sections.c: 
792         * atomic.c: Added pthreads cleanup handlers and error asserts
793
794         * shared.c: 
795         * handles.c: Fixed the gcc "variable might be used uninitialised"
796         warnings.  They can't happen, but gcc doesn't know that
797         g_assert()s don't return.
798
799         Fixed the declaration of _wapi_handle_process_kill() so that it
800         expects the correct type for the pid.
801         
802         * threads.c: Removed the TLS_PTHREAD_MUTEX style locking that
803         hasn't been used in ages and just made the code more complex.
804
805 2004-04-17  Zoltan Varga  <vargaz@freemail.hu>
806
807         * processes.c: Include <signal.h> for SIGKILL and SIGILL + fix some
808         warnings. Fixes #57168.
809
810 2004-04-16  Dick Porter  <dick@ximian.com>
811
812         * threads.c (Sleep): Using div(3) with a negative (when signed)
813         numerator causes the quotient to be 0 and the remainder to be the
814         numerator.  This feeds a small negative value to nanosleep(3),
815         which will return immediately and cause a busy wait.  Fixes bug
816         56351.
817
818 2004-04-15  Dick Porter  <dick@ximian.com>
819
820         * io-private.h:
821         * io.c: Rewrite FindFirstFile and FindNextFile using scandir(3)
822         and fnmatch(3) instead of glob(3).  glob() can't cope with being
823         given filenames containing metachars.  This fixes bug 40557.
824
825 2004-04-14  Bernie Solomon  <bernard@ugsolutions.com>
826
827         * security.c: #warning is a GCC-ism
828
829 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
830
831         * security.c: Removed GetUserName as glib g_get_user_name does a
832         better (portability) job. Added ImpersonateLoggedOnUser and
833         RevertToSelf.
834
835 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
836
837         * mono-mutex.h: move pthread_mutex_timedlock declaration to...
838         * mono-mutex.c: ...here. It was causing a warning that prevented
839         libgdiplus compilation.
840
841 2004-04-04  Miguel de Icaza  <miguel@ximian.com>
842
843         * security.c (GetUserName): Make it work on MacOS X
844
845 2004-04-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
846
847         * security.c: use getpwuid_r if available. This one is thread-safe.
848
849 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
850
851         * Makefile.am: Added security.c|h.
852         * security.c: New file for security related functions. Added function
853         GetUserName to fix #56144.
854         * security.h: New. Header file for security.c
855         * wapi.h: Added include for security.h
856
857 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
858
859         * daemon-messages.h: added kill structs.
860
861         * daemon.c: implemented process_process_kill.
862         * handles-private.h:  define process_process_kill.
863         * handles.c: implemented _wapi_handle_process_kill.
864         * processes.[ch]: implemented TerminateProcess.
865
866 2004-03-25  Bernie Solomon  <bernard@ugsolutions.com>
867
868         * daemon.c (rem_fd): On solaris you seem to get an
869         error even after removing the input source so don't
870         try and rem_fd it twice.
871
872 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
873
874         * daemon.c: in process_post_mortem, If the child terminated due to the 
875         receipt of a signal, the exit status must be based on WTERMSIG, since 
876         WEXITSTATUS returns 0 in this case.
877
878 2004-03-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
879
880         * daemon.c: turned a warning into a DEBUG statement. Now we may hit it.
881
882 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
883
884         * daemon.c: only call getdtablesize () once.
885         * processes.c: wait 500 ms to check if execve failed and throw the same
886         exception as MS on failure. Fixes bug #32809.
887
888 2004-03-17  Bernie Solomon  <bernard@ugsolutions.com>
889
890         * io.c (async_notifier): use "union sigval" rather
891         than sigval_t as Solaris doesn't have sigval_t
892         (which isn't in IEEE 1003.1 either).
893
894 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
895
896         * io.c: added debug stuff and removed a few redundant lines in
897         file_write.
898
899 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
900
901         * io-private.h: added new fields for file structure. Declare
902         _wapi_io_add_callback.
903
904         * io.c: added _wapi_get_win32_error, support aio_read/write in
905         file_read/write. Implemented _wapi_io_add_callback, which is where
906         BindHandle ends up.
907         
908         * io.h: added new fields for WapiOverlapped and typedef for the
909         callback.
910
911         * processes.c: fixed off-by-one bug when handling environment variables 
912         passed in.
913
914         * threads.[ch]: implemented BindIoCompletionCallback.
915
916         * uglify.h: added typedef for LPOVERLAPPED_COMPLETION_ROUTINE.
917
918 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
919
920         * socket-wrappers.h: Remove extra semicolon.
921
922 2004-03-03  Dave Camp  <dave@ximian.com>
923
924         * daemon.c: (add_fd), (fd_activity), (_wapi_daemon_main):
925         Use a new main context.
926
927 2004-03-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
928
929         * io.c:
930         (GetFileAttributes): set the error depending on errno instead of
931         setting ERROR_FILE_NOT_FOUND always. See bug #55160.
932
933 2004-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
934
935         * io.c:
936         (CopyFile): free the buffer on error.
937         * sockets.c:
938         (WSAIoctl): free the buffer on error.
939
940 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
941
942         * error.c: fixed mapping for EPROTONOSUPPORT and ESOCKTNOSUPPORT.
943
944         * sockets.[ch]: retry creating the socket for AF_INET, SOCK_RAW
945         using IP protocol with IP over IP. Implemented WSAIoctl UNIX-style.
946
947 2004-01-27  Bernie Solomon  <bernard@ugsolutions.com>
948
949         * shared.c (_wapi_shm_file): add hostname
950         to shared data file names to handle NFS mounted
951         .wapi directories.
952
953 Mon Jan 26 16:15:03 CET 2004 Paolo Molaro <lupus@ximian.com>
954
955         * sockets.h: remove obsolete soklen_t typedef.
956
957 Fri Jan 23 21:07:02 CET 2004 Paolo Molaro <lupus@ximian.com>
958
959         * socket-wrappers.h, sockets.h, sockets.c, Makefile.am: move socket
960         wrappers to its own non-installed header file.
961
962 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
963
964         * io.c:
965         (FindFirstFile): unlock the handle if FindNextFile fails.
966         (FindNextFile): g_free a couple of pointers before retrying.
967
968         * wait.c:
969         (WaitForMultipleObjects): if only one handle provided, use
970         WaitForSingleObject.
971
972 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
973
974         * handles-private.h: (_wapi_handle_type) check
975         for segment in range before using it
976
977 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
978
979         * thread-private.h: _wapi_thread_ops is now const
980         must match .c file.
981
982 Mon Dec 22 18:29:03 CET 2003 Paolo Molaro <lupus@ximian.com>
983
984         * threads.c, timed-thread.c, timed-thread.h: use mach
985         semaphores on Darwin (MacOSX) since the posix ones
986         are mostly broken there (threads are not created suspended
987         and they can start executing before they are fully initialized
988         like in tests/thread-static.cs).
989
990 Mon Dec 22 17:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
991
992         * atomic.h: ppc fixes.
993
994 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
995
996         * handles.c: remove my bad use of MONO_ZERO_ARRAY_LENGTH
997         in HDRSIZE 
998
999 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
1000
1001         * shared.c: (_wapi_shm_open) make scratch file
1002         not have to immediately regrow to avoid remaps
1003         (HPUX can't cope with these).
1004         (_wapi_shm_attach) use actual size of file
1005         to set scratch data_len for the creating process.
1006
1007         * handles.c: (_wapi_handle_new_internal) make
1008         sure mutex & cond var are initialized even for
1009         non process shared ones. 
1010         (_wapi_handle_unref) always call destroy 
1011         routines on mutex & cond var
1012
1013 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
1014
1015         * daemon.c: change channel data structure so
1016         input sources are removed from glib event loop
1017         properly. xsp works better on Solaris and 
1018         fixes #51278
1019
1020 2003-12-12  Bernie Solomon  <bernard@ugsolutions.com>
1021
1022         * wapi-private.h: Replace G_GNUC_PRETTY_FUNCTION
1023         definition with file & line number for non-GCC
1024         compiles.
1025
1026 2003-12-08  Bernie Solomon  <bernard@ugsolutions.com>
1027
1028         * Makefile.am: make sure hppa_atomic.s is in distribution
1029
1030 2003-12-01  Dick Porter  <dick@ximian.com>
1031
1032         * wapi-private.h: 
1033         * mutexes.c (CreateMutex): 
1034         * mutex-private.h (struct _WapiHandle_mutex): 
1035         * handles.c: Look up certain handle types by name, in a shared
1036         namespace.  Currently only mutex handles have this implemented.
1037         Fixes bug 51089.
1038
1039         * semaphores.c (CreateSemaphore): 
1040         * events.c (CreateEvent): Fix signature
1041
1042 2003-11-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1043
1044         * io.c: don't call g_free before testing errno as it may modify it.
1045         If the path exists, return an error if it's not a directory. Fixes
1046         bug #50753.
1047
1048 2003-11-20  Dick Porter  <dick@ximian.com>
1049
1050         * io.c: Missed a little-endian UTF16 conversion.  Patch from
1051         Jeroen Zwartepoorte (Jeroen@xs4all.nl), fixes bug 51065.
1052
1053 2003-10-29  Dick Porter  <dick@ximian.com>
1054
1055         * io.c (MoveFile): If the move crosses filesystems, try and fall
1056         back to copy and delete.  Patch from Jörg Rosenkranz
1057         (JoergR@voelcker.com), fixes bug 50298.
1058
1059 2003-10-28  Dick Porter  <dick@ximian.com>
1060
1061         * io.c: Use the new encoding conversion to cope with non-utf8
1062         locales in filenames.
1063
1064         * processes.c: Ditto for process arguments.
1065
1066 Tue Oct 21 12:01:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
1067
1068         * atomic.h: some ppc inline asm fixes (incorrect use of labels, 
1069         incorrect register constraints, incorrect clobber lists).
1070
1071 2003-10-13  Bernie Solomon  <bernard@ugsolutions.com>
1072
1073         * Makefile.am hppa_atomic.s: add HP 64bit
1074         implementation of atomic ops
1075
1076 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
1077
1078         * threads.c (CreateThread): Wrap pthread_attr_setstacksize call in
1079         a conditional for platforms that don't have it.
1080
1081 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
1082
1083         * threads.c: (CreateThread) use stacksize argument
1084         if non-zero - change default for 64 bits to 4Mb
1085
1086 2003-09-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1087
1088         * sockets.c: set last error when socket creation fails. This shed some
1089         light on bug #49015.
1090
1091 2003-09-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1092
1093         * processes.c: fixed bug #48973: we only change \ by / for the argument
1094         to be used as command.
1095         When getting the program name from the args, don't let the space between
1096         them in the args.
1097
1098 2003-09-24  Bernie Solomon <bernard@ugsolutions.com>
1099
1100         * atomic.h atomic.c: fix sparc so lock is
1101         global, increment does so and it compiles under Sun compiler.
1102
1103 2003-09-22  Bernie Solomon <bernard@ugsolutions.com>
1104
1105         * handles.c: include <string.h> directly as may
1106         not be nested in <sys/un.h> like Linux
1107
1108 2003-09-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1109
1110         * io.c:
1111         (DeleteFile): call SetLastError on failure. Fix by
1112         richard.torkar@htu.se (Richard Torkar). Closes bug #48222.
1113
1114 2003-09-15  Lluis Sanchez Gual  <lluis@ximian.com>
1115
1116         * daemon.c: In compare_process(), discard handles already signalled.
1117
1118 2003-09-02  Dick Porter  <dick@ximian.com>
1119
1120         * io.c: Work around glib brain-dead assumptions about utf8-encoded
1121         filenames.  Fixes bug 30781.
1122
1123 2003-08-28  Dick Porter  <dick@ximian.com>
1124
1125         * critical-sections.c:  Patch from Bernie Solomon
1126         <bernard@ugsolutions.com> to emit a warning if locking a critical
1127         section fails.
1128
1129 2003-07-23  Dick Porter  <dick@ximian.com>
1130
1131         * shared.c:
1132         * daemon.c (maybe_exit): Avoid the race condition when the daemon is
1133         closing but another client comes along when the shared data is still
1134         visible.  Should fix bugs 33671 and 35213.
1135
1136 2003-07-23  Dick Porter  <dick@ximian.com>
1137
1138         * handles.c:  Initialise handle mutex and cond.  Fix by
1139         Bernie Solomon <bernard@ugsolutions.com>
1140
1141 2003-07-15  Dick Porter  <dick@ximian.com>
1142
1143         * timed-thread.c (timed_thread_start_routine): Fix virtual memory
1144         leak when threads quit.  Fixes bug 44067.
1145
1146 Wed Jun 18 19:08:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
1147
1148         * io.c: never add write permission for group or others in
1149         SetFileAttributes ().
1150
1151 2003-06-17  Dick Porter  <dick@ximian.com>
1152
1153         * io.c (SetFileAttributes): Implement the ReadOnly attribute, and
1154         ignore the unsupported ones ("fixes" bug 44977).
1155
1156 2003-06-17  Lluis Sanchez Gual  <lluis@ximian.com>
1157
1158         * misc.c: fix bug in _wapi_calc_timeout. It gave wrong values for
1159           high ms values (there was an overflow).
1160
1161 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
1162
1163         * system.h (struct _WapiSystemInfo ): Fix warnings when using gcc-3.3.
1164
1165 2003-06-11  Dick Porter  <dick@ximian.com>
1166
1167         * shared.c: Fix shared directory creation.  Patch from
1168         Pablo Baena <pbaena@uol.com.ar>
1169
1170 2003-06-10  Dick Porter  <dick@ximian.com>
1171
1172         * atomic.c: Delete the useless compile warning
1173
1174 2003-06-09  Dick Porter  <dick@ximian.com>
1175
1176         * daemon.c: Lookup env as a string array.  Fixes bug 44289.  Also
1177         make setting the process handle value in the environment actually
1178         work.
1179
1180         * processes.c: Pretty up the process name, if it happens to be
1181         "mono" such as when another mono process forks "mono foo.exe"
1182
1183 2003-06-05  Dick Porter  <dick@ximian.com>
1184
1185         * processes.c (process_set_current): Don't do an expensive handle
1186         search at application startup, check the environment to see if the
1187         process handle has already been created.
1188
1189         * io.c: Don't do an expensive handle search when creating stdin,
1190         stdout and stderr handles, just create them all the first time one
1191         is requested.
1192
1193         * wapi-private.h:
1194         * shared.c:
1195         * shared.h:
1196         * handles.c:
1197         * handles-private.h:
1198         * daemon-messages.h:
1199         * daemon-private.h:
1200         * daemon.c: Support for "unlimited" number of handles and scratch
1201         data.
1202
1203         Speed up application startup by passing process handle in the
1204         environment, rather than let the app scan all handles (which gets
1205         really slow when there are more than a few thousand to check.)
1206
1207         Initialise some structs passed to syscalls, noticed by valgrind.
1208         
1209
1210 2003-05-20  Dick Porter  <dick@ximian.com>
1211
1212         * io.c (FindFirstFile): Include . files in the glob.  Fixes bug
1213         43229.
1214
1215 2003-05-19  Dick Porter  <dick@ximian.com>
1216
1217         * threads.c: Set the new thread's stack size to 2M.  Fix needed
1218         for BSD, reported by Martin Dvorak <md@9ll.cz>
1219
1220 2003-05-16  Dick Porter  <dick@ximian.com>
1221
1222         * io.h:
1223         * io.c: Implement GetTempPath()
1224
1225 2003-05-16  Dick Porter  <dick@ximian.com>
1226
1227         * processes.c (CreateProcess): Set some error codes
1228
1229 2003-05-12  Dick Porter  <dick@ximian.com>
1230
1231         * misc.c (_wapi_calc_timeout): Cope with overflowing tv_nsec.
1232         Patch from Martin Dvorak <mdvorak@ninell.cz>.
1233
1234 2003-05-10  Dick Porter  <dick@ximian.com>
1235
1236         * io.c (CopyFile): Copy file mode as well as file data.  Based on
1237         suggestion by Giuseppe Greco <giuseppe.greco@agamura.com>, bug
1238         42706.
1239
1240 2003-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1241
1242         * handles.c: don't call GC_gcollect when creating new handles.
1243
1244 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1245
1246         * handles.c: added some debugging code. Call GC_gcollect
1247         before creating a new handle. It makes Lupus' test run smoother and
1248         faster (from 62 to 83 request per second). Notice that calling
1249         GC_finalizer_notifier if needed (GC_should_invoke_finalizer ()) does
1250         not improve nor degrade the performance, so i don't do it.
1251
1252 2003-05-02  Dick Porter  <dick@ximian.com>
1253
1254         * sockets.c: Rearrange closesocket() and socket_close_private(),
1255         and remember to unref the handle, so we don't leak socket handles.
1256         Fix from Pelle Johnsen <pelle.johnsen@mail.dk>
1257
1258 2003-04-11  Dick Porter  <dick@ximian.com>
1259
1260         * atomic.h: ARM atomic operations by Malte Hildingson
1261         <tds00mahi@tellus.thn.htu.se>
1262
1263 Tue Apr 8 11:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
1264
1265         * atomic.h: fix macosx build by "Urs C. Muff" <umuff@quark.com>.
1266
1267 2003-04-03  Martin Baulig  <martin@ximian.com>
1268
1269         The following change is conditional to `WITH_INCLUDED_LIBGC'
1270         which is not yet enabled by default.
1271
1272         * threads.c (SuspendThread, ResumeThread): Fully implemented this.
1273         (gc_init): New static function; install a signal handler for
1274         SIGPWR which is used to suspend threads.  [FIXME: it SIGPWR
1275         doesn't exist on all Unix systems, we need to find another
1276         signal].
1277         (mono_wapi_push_thread_stack): New public function.  Tells the
1278         garbage collector about the current stack pointer of a suspended
1279         thread.
1280
1281 2003-04-03  Martin Baulig  <martin@ximian.com>
1282
1283         * timed-thread.h (TimedThread): Added `suspended_sem',
1284         `suspend_count' and `stack_ptr'.
1285
1286 2003-03-28  Dick Porter  <dick@ximian.com>
1287
1288         * atomic.h: PPC support gratiously donated to the public domain
1289         by John Duncan <jddst19@mac.com>
1290
1291 2003-03-20  Dick Porter  <dick@ximian.com>
1292
1293         * sockets.c (_wapi_connect): If connect() fails with EACCES, try
1294         setting SO_BROADCAST and connecting again.  Fixes bug 39178.
1295
1296 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1297
1298         * processes.c: included Jerome Laban's patch and call SetLastError when
1299         the executable is not found.
1300
1301 2003-03-03  Dick Porter  <dick@ximian.com>
1302
1303         * io.c (CreateFile): Try opening directories readonly, so that
1304         timestamps can be adjusted.  Patch by Elan Feingold
1305         <efeingold@mn.rr.com>.
1306
1307 2003-02-25  Dick Porter  <dick@ximian.com>
1308
1309         * shared.c (_wapi_shm_attach): Return a failure code on system
1310         call errors, rather than exiting.
1311
1312 2003-02-21  Dick Porter  <dick@ximian.com>
1313
1314         * processes.c (GetCurrentProcessId): Use the current process
1315         handle to return the process ID, as getpid() is unreliable
1316         (linuxthreads gives each thread a different pid).  Fixes bug
1317         37550.
1318
1319 2003-02-21  Dick Porter  <dick@ximian.com>
1320
1321         * io.c (FindNextFile): Skip over dangling symlinks.  Fixes bug
1322         34076.
1323
1324 2003-02-11  Dick Porter  <dick@ximian.com>
1325
1326         * timefuncs.h: 
1327         * timefuncs.c: Added GetTickCount()
1328
1329 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1330
1331         * error.c: added WSA_EHOSTUNREACH mapping.
1332
1333 2003-01-26  Miguel de Icaza  <miguel@ximian.com>
1334
1335         * io.c (SetFileAttributes): This routine is not currently
1336         implemented for the general case, but I added a special case to
1337         set the executable bit on Linux.
1338
1339 Wed Jan 15 15:55:40 CET 2003 Paolo Molaro <lupus@ximian.com>
1340
1341         * sockets.h, daemon.c, io.c: compilation fixes on MacOSX.
1342
1343 2003-01-08  Dick Porter  <dick@ximian.com>
1344
1345         * sockets.c: Fixed setting blocking mode to true (fixes bug 36388)
1346
1347 2002-12-11  Juli Mallett  <jmallett@FreeBSD.org>
1348
1349         * daemon.c, handles-private.h, handles.c, wapi-private.h:
1350         Check for an implementation which says it supports
1351         _POSIX_THREAD_PROCESS_SHARED, rather than just one that
1352         defines the symbol.  Defined but with a value of -1 still
1353         means that it is unsupported.
1354
1355 2002-12-08  Martin Baulig  <martin@ximian.com>
1356
1357         * handles.c (_wapi_handle_new): Create new non-shared handles with
1358         an initial refcount of 1, not 0.
1359
1360 2002-11-22  Dietmar Maurer  <dietmar@ximian.com>
1361
1362         * threads.c (TlsGetValue): removed unnecessary mutex
1363
1364 2002-11-20  Dick Porter  <dick@ximian.com>
1365
1366         * timed-thread.c (_wapi_timed_thread_attach): Attached threads
1367         need to store their data structure too.
1368
1369         * threads.c: Make sure the threading data is initialised wherever
1370         it is needed
1371
1372 2002-11-15  Dick Porter  <dick@ximian.com>
1373
1374         * timed-thread.c: Removed unneeded parameters in
1375         _wapi_timed_thread_attach().
1376
1377         * threads.c: Renamed AttachThread() to make it not look like
1378         external API.  Removed unneeded parameters.
1379
1380 2002-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1381
1382         * error.[ch]: added errno_to_WSA (). It displays a warning and return
1383         WSASYSCALLFAILURE if there is no error mapping for the given errno,
1384
1385         * sockets.c: use errno_to_WSA and fixed display of warning for h_errno.
1386
1387 2002-10-31  Dick Porter  <dick@ximian.com>
1388
1389         * io.h: 
1390         * io.c: Define and use INVALID_FILE_ATTRIBUTES
1391
1392 2002-10-07  Dick Porter  <dick@ximian.com>
1393
1394         * timefuncs.c:
1395         * daemon.c: Use a more accurate time source for process start and
1396         end times.
1397
1398 2002-10-03  Dick Porter  <dick@ximian.com>
1399
1400         * daemon.c:
1401         * handles.c:
1402         * threads.c:  Fixes for freebsd.  Make sure that mutex and condition
1403         creation and deletion happen in the process that owns them, when
1404         POSIX shared thread objects aren't supported.  This breaks on
1405         freebsd, as pthread_t is a pointer to data.
1406
1407 2002-10-02  Dick Porter  <dick@ximian.com>
1408
1409         * shared.c: Use mmap() instead of sysv shm for the shared data.
1410
1411         * wapi-private.h (_WAPI_HANDLE_VERSION): Reset back to 0, for the
1412         new system
1413
1414         * daemon-private.h: 
1415         * daemon.c: mmap()ed regions survive fork, so just pass the
1416         pointer to _wapi_daemon_main instead of mapping it again.
1417
1418 2002-10-01  Dick Porter  <dick@ximian.com>
1419
1420         * timed-thread.c: Kludge for CREATE_SUSPENDED thread creation.
1421         Unfortunately libgc uses the same thread suspend technique that I
1422         want to, and the two don't mix: libgc will deadlock when it tries
1423         to stop the world if a thread has already been suspended by
1424         someone else.  Just do the simple suspended create rather than the
1425         general purpose thread suspension for now.
1426
1427         * threads.c: Pass create flags to the timed_thread create call, to
1428         implement suspended thread creation.  ResumeThread() partially
1429         implemented, to cope with the case where a newly created but
1430         suspended thread is launched.
1431
1432 2002-09-30  Dick Porter  <dick@ximian.com>
1433
1434         * sockets.c (ioctlsocket): Set non-blocking mode in a better way,
1435         with fcntl.
1436
1437 2002-09-27  Dick Porter  <dick@ximian.com>
1438
1439         * semaphores.c: Only include semaphore.h if it's present. Patch
1440         for BSD from jmmv@hispabsd.org (Julio Merino).
1441
1442 2002-09-27  Dick Porter  <dick@ximian.com>
1443
1444         * processes.c: Pass environment and working directory to the
1445         daemon when forking.  Don't let argv[0] be duplicated when looking
1446         for the program name.  Implement EnumProcessModules (simple
1447         version for now, lsof-style later if needed), GetModuleBaseName,
1448         {Get,Set}ProcessWorkingSetSize (just faked, because the vm hints
1449         aren't available on Linux).
1450
1451         * process-private.h: Store the process name, and the working set
1452         min and max
1453
1454         * handles.c:
1455         * handles-private.h: New functions to store and retrieve an array
1456         of strings in the scratch space
1457
1458         * daemon.c: Don't miss deleting some handles when a client exits
1459         (we used to rely on the client doing the final cleanup, but
1460         obviously if the client is no longer there the daemon has to do
1461         it).
1462
1463         Process forking now sets the environment and the working
1464         directory.
1465
1466         * io.c: Don't confuse fd 0 with an unassigned handle struct
1467
1468         * atomic.h: Add a google cache alternative to the msdn URL
1469
1470 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1471
1472         * sockets.c:
1473         (_wapi_recvfrom): added ECONNRESET to the switch.
1474
1475 2002-09-24  Mark Crichton  <crichton@gimp.org>
1476
1477         * atomic.h: Yea.  On linux, sparc isn't sparc, it's __sparc__.
1478         Added to ifdef.
1479
1480 2002-09-19  Mark Crichton  <crichton@gimp.org>
1481
1482         * daemon.c, shared.c: Added NEED_LINK_UNLINK for systems that
1483         dont have Linux's abstract filesystem for sockets.
1484
1485 2002-09-19  Mark Crichton  <crichton@gimp.org>
1486
1487         * atomic.h: Added SPARC atomic asm code.
1488         * daemon.c, handles-private.h, handles.c, wapi-private.h:
1489         undefined _POSIX_THREAD_PROCESS_SHARED.  This actually exists on
1490         Solaris 9, however, the code paths don't seem to work.  More testing
1491         on the shared case is *really* needed.
1492
1493 2002-09-03  Dick Porter  <dick@ximian.com>
1494
1495         * threads.h: 
1496         * threads.c: Removed PosixKillThread(), because it's not in the
1497         w32 api
1498
1499 2002-08-20  Dick Porter  <dick@ximian.com>
1500
1501         * handles.c (_wapi_handle_scratch_store): Made stored byte lengths
1502         multiples of 4 bytes, to keep header structures aligned.  Needed
1503         for sparc, at least. (Patch from crichton@gimp.org)
1504
1505         * handles.c: Removed 'disable_shm' variable (we've defaulted to
1506         building with shm enabled for months now)
1507
1508 2002-08-19  Dick Porter  <dick@ximian.com>
1509
1510         * daemon.c: Rewrote the poll() loop to use GIOChannels instead,
1511         for legacy NeXT-based systems.
1512
1513 2002-08-12  Dick Porter  <dick@ximian.com>
1514
1515         * atomic.h: Rename some parameters to avoid c++ keywords (Patch
1516         from Joseph Wenninger <kde@jowenn.at>)
1517
1518 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
1519
1520         * threads.c: use fast spinlocks by default
1521
1522 2002-08-02  Dick Porter  <dick@ximian.com>
1523
1524         * io.c (GetStdHandle): Add a handle reference when returning a
1525         duplicate console handle.  This fixes the unref_handle errors in
1526         NUnit.
1527
1528 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
1529
1530         * threads.c (TLS_PTHREAD_MUTEX): define this because else some
1531         tests does not work
1532
1533 2002-08-01  Dick Porter  <dick@ximian.com>
1534
1535         * threads.c: Use atomic spinlocks in TLS functions
1536
1537         * mono-spinlock.h:
1538         * Makefile.am: Added mono-spinlock.h
1539
1540 2002-07-21  Jeffrey Stedfast  <fejj@ximian.com>
1541
1542         * daemon-messages.c: #include <sys/types.h> and <sys/sockets.h> -
1543         these are needed for sendmsg() and also for struct msghdr (at
1544         least on Solaris). Solaris still won't build because struct msghdr
1545         doesn't have msg_flags, msg_control, or msg_controllen members.
1546         (CMSG_SPACE): Define for systems that don't have it.
1547         (CMSG_LEN): Same.
1548
1549 2002-07-20  Dick Porter  <dick@ximian.com>
1550
1551         * wapi-private.h:
1552         * io-private.h:
1553         * io.h:
1554         * io.c:
1555         * handles.c: Implemented pipe handles
1556         
1557         * handles.c:
1558         * daemon.c: Fixed bug in handle closing.
1559
1560         * shared.c:
1561         * daemon.c: Forked processes now close all open file descriptors.
1562
1563 Fri Jul 19 19:05:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
1564
1565         * sockets.h, io-layer.h, critical-sections.h: don't include config.h
1566         in header files.
1567
1568 2002-07-19  Martin Baulig  <martin@gnome.org>
1569
1570         * threads.c (ExitThread): Call exit() if no threads has been
1571         created yet.
1572
1573 2002-07-17  Dick Porter  <dick@ximian.com>
1574
1575         * daemon-messages.c: Freebsd fixes from Andreas Kohn
1576         <andreas.kohn@gmx.net>
1577
1578 2002-07-15  Dick Porter  <dick@ximian.com>
1579
1580         * io.c: Removed bogus console_flush() method, that was just cut
1581         and pasted from file_flush when I separated the two handle types.
1582
1583 2002-07-12  Dick Porter  <dick@ximian.com>
1584
1585         * io.c (convert_from_flags): Fixed misunderstanding wrt fcntl
1586         flags.  Fixes bug 27633.
1587
1588 2002-07-12  Dick Porter  <dick@ximian.com>
1589
1590         * wapi-private.h:
1591         * handles.c:
1592         * daemon.c: Use size of sockaddr_un.sun_path from config.h
1593
1594 2002-07-12  Dick Porter  <dick@ximian.com>
1595
1596         * processes.c (CreateProcess): Send stdin, stdout and stderr
1597         handles if the startup info doesnt specify new ones
1598
1599         * io.c (GetStdHandle): Return the same handle when the same
1600         standard handle is requested
1601
1602         * handles.c: Pass file descriptors when forking
1603
1604         * daemon.c: Use supplied file descriptors when forking a new
1605         process
1606
1607         * daemon-messages.h: 
1608         * daemon-messages.c: Pass stdin, stdout and stderr file
1609         descriptors to the daemon (used when forking)
1610
1611 2002-07-11  Miguel de Icaza  <miguel@ximian.com>
1612
1613         * daemon.c (_wapi_daemon_main): Use sizeof
1614         (main_socket_address.sun_path) instead of hardcoded 108 value.
1615
1616         * handles.c (shared_init): Use sizeof
1617         (shared_socket_address.sun_path) instead of hardcoded 108 value.
1618
1619 2002-07-10  Dennis Haney  <davh@davh.dk>
1620
1621         * shared.c:
1622         * handles.c:
1623         * daemon.c: Lots of documentation, some added error checking, and
1624         code readability improvements.
1625
1626         * daemon-messages.h: Add the Error request type to improve error
1627         checking.
1628
1629         * daemon-messages.c: Do a bit more error checking on send() and
1630         recv(), and log errors with a higher severity level.
1631
1632 2002-07-04  Dick Porter  <dick@ximian.com>
1633
1634         * daemon.c (process_process_fork): Fix argument handling, due to
1635         buggy understanding of g_strsplit() behaviour.
1636
1637 2002-07-03  Dick Porter  <dick@ximian.com>
1638
1639         * threads.h:
1640         * threads.c: Implement OpenThread().  Define access-control values
1641         for thread handles.
1642
1643         * wapi.h:
1644         * processes.h:
1645         * access.h:
1646         * Makefile.am: Added access.h, to hold shared access-control
1647         definitions
1648
1649 2002-07-02  Dick Porter  <dick@ximian.com>
1650
1651         * wapi-private.h (_WAPI_HANDLE_VERSION): New protocol version
1652         
1653 2002-07-02  Dick Porter  <dick@ximian.com>
1654
1655         * handles.c (shared_init): Make a second attempt to contact the
1656         daemon if the shared memory attach succeeds, but the connect()
1657         fails. (This copes with the daemon crashing without cleaning up
1658         the shared memory.)
1659
1660         * Makefile.am: 
1661         * daemon-private.h:
1662         * daemon.c:
1663         * shared.c (_wapi_shm_attach): Don't exec() anything when we fork
1664         the daemon, it's now built into the library.
1665
1666 2002-06-25  Dick Porter  <dick@ximian.com>
1667
1668         * handles.c:
1669         * handles-private.h:
1670         * daemon-messages.h:
1671         * daemon.c: Process forking and handle data management
1672
1673         * processes.h:
1674         * process-private.h:
1675         * processes.c: Process forking and other support functions
1676
1677 2002-06-25  Dick Porter  <dick@ximian.com>
1678
1679         * versioninfo.h: PE resource decoding
1680
1681         * unicode.c (_wapi_unicode_to_utf8): g_utf16_to_utf8 doesnt need
1682         to be told the string length
1683
1684         * io.c: Removed the ACTUALLY_DO_UNICODE option.  Fixed some leaks.
1685         Moved _wapi_time_t_to_filetime and the WapiFileTime typedef to
1686         timefuncs.c
1687
1688 2002-06-12  Dick Porter  <dick@ximian.com>
1689
1690         * daemon.c: 
1691         * daemon-messages.c: Handle SIGPIPE in a non-stupid way in the
1692         daemon, if MSG_NOSIGNAL isn't available.  Thanks to Jaroslaw
1693         Kowalski <jarek@atm.com.pl> for pointing out the bogosity.
1694
1695 2002-06-10  Jaroslaw Kowalski <jarek@atm.com.pl>
1696
1697         * sockets.c, daemon-messages.c: Prevent SIGPIPE from being raised
1698         when writing to a closed socket.
1699
1700 2002-06-08  Jeffrey Stedfast  <fejj@ximian.com>
1701
1702         * mono-mutex.c (mono_once): New convenience function for my
1703         previous fix.
1704
1705         * handles.c:
1706         * error.c: 
1707         * critical-sections.c: 
1708         * threads.c: 
1709         * sockets.c: 
1710         * semaphores.c: 
1711         * processes.c: 
1712         * mutexes.c: 
1713         * io.c: 
1714         * events.c: 
1715         * atomic.c: Use mono_once() rather than pthread_once().
1716
1717 2002-06-06  Jeffrey Stedfast  <fejj@ximian.com>
1718
1719         * handles.c (_wapi_handle_new): pthread_once() is not atomic, so
1720         if multiple threads all try to call _wapi_handle_new() before the
1721         shared data has been initialized, it is possible that we could get
1722         into a condition where shared_init() is being executed and later
1723         threads will pass by pthread_once() due to the fact that it has
1724         already been called and so therefor will attempt to use the shared
1725         data before it has been completely initialized. If we instead use
1726         a standard mutex locking mechanism around shared_init(), we can
1727         avoid the situation entirely. By wrapping the mutex locking in a
1728         check to see if we've already initialized the data, we can even
1729         avoid wasting resources by having to lock/unlock the mutex in any
1730         later calls (the only time we'd have to worry about
1731         locking/unlocking is the initial race to call shared_init() at
1732         startup).
1733
1734 Sat Jun 1 13:27:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
1735
1736         * atomic.h: inline asm fixes from Dennis Haney (davh@davh.dk).
1737
1738 Fri May 31 16:21:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
1739
1740         * daemon.c, handles.c: rename "sun" local var since it's apparently
1741         a #define on Solaris.
1742
1743 Fri May 31 15:40:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
1744
1745         * daemon-messages.c: work-around MSG_NOSIGNAL missing on some
1746         platforms.
1747
1748 2002-05-15  Dick Porter  <dick@ximian.com>
1749
1750         * wait.c: Fix a deadlock in WaitForMultipleObjects
1751
1752 2002-05-14  Dick Porter  <dick@ximian.com>
1753
1754         * io.c: Fix a cut&paste error, found by
1755         Jaroslaw Kowalski <jarek@atm.com.pl>
1756
1757 2002-05-10  Dan Lewis  <dihlewis@yahoo.co.uk>
1758
1759         * io.c: Nasty typo.
1760
1761 2002-05-09  Dick Porter  <dick@ximian.com>
1762
1763         * threads.c: 
1764         * semaphores.c: 
1765         * processes.c: 
1766         * mutexes.c: 
1767         * handles-private.h: 
1768         * events.c: 
1769         * Makefile.am: Remove now-unused file wait-private.h
1770
1771 2002-05-08  Dick Porter  <dick@ximian.com>
1772
1773         * shared.c: Better error messages, and report when daemon
1774         connection fails rather than blocking forever.  Do some more
1775         shared memory sanity checking.
1776
1777         * handles.c: Better error messages when connecting to shared
1778         memory and the handle daemon.  Fall back to non-shared handles if
1779         an error occurs.  Set the default back to 'shared handles'.  Fix a
1780         crashing bug in scratch space allocation that mangled the block
1781         headers.
1782
1783 2002-05-07  Miguel de Icaza  <miguel@ximian.com>
1784
1785         * handles.c (shared_init): Disable SHM for now, people have too
1786         many problems with this, and the diagnostics are not helping.
1787
1788 2002-05-06  Dan Lewis  <dihlewis@yahoo.co.uk>
1789
1790         * io.c: CreateFile sets win32 last error.
1791
1792 2002-05-05  Dick Porter  <dick@ximian.com>
1793
1794         * wapi-private.h: 
1795         * handles-private.h:
1796         * io.c: 
1797         * io-private.h:
1798         * mutexes.c: 
1799         * mutex-private.h: 
1800         * processes.c: 
1801         * process-private.h: 
1802         * semaphores.c: 
1803         * semaphore-private.h: 
1804         * sockets.c: 
1805         * socket-private.h: 
1806         * events.c: 
1807         * event-private.h: Simplify the WapiHandleOps struct: take out all
1808         the file-specific entries, leaving just the items that operate on
1809         handles themselves.  Split the close operation into shared and
1810         private parts: shared close is called by the daemon.
1811
1812         * handles.c: As above, but also pass handle allocation, ref and
1813         unref operations to the daemon.  Populate the handle_ops array at
1814         compile time, because the daemon needs to call ops on handles too.
1815         Don't bother to track open handle counts any more, the daemon does
1816         that.
1817         
1818         * threads.c: 
1819         * thread-private.h: As above, but also make the thread data
1820         handle-private.
1821
1822         * shared.c: Fork a handle daemon if the calling process created
1823         the shared memory segment.
1824
1825         * daemon.c:
1826         * daemon-messages.c:
1827         * daemon-messages.h:
1828         * Makefile.am: Build a daemon to manage handle allocation and
1829         destruction without needing to lock the shared memory
1830
1831 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
1832
1833         * atomic.c: Changed to use a normal mutex rather than a spinlock
1834         since a lot of platforms seem to not have them :\
1835
1836 2002-04-30  Dick Porter  <dick@ximian.com>
1837
1838         * Completely rewrote the handle waiting code: removed the helper
1839         thread and its attendant complexity.  All handle waiting is now
1840         abstracted into the WaitForSingleObject() and
1841         WaitForMultipleObjects() functions.
1842
1843         * Implemented inter-process sharing of handles using sysv shared
1844         memory.  This makes handles even more opaque, with a handle now
1845         just an index into an array.
1846         
1847 2002-04-25  Dan Lewis  <dihlewis@yahoo.co.uk>
1848
1849         * io.c: unitialized pointer in GetCurrentDirectory.
1850
1851 Sat Apr 20 13:37:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
1852
1853         * threads.c: destroy the mutex at thread destruction
1854         (if/when thread destruction code will be actually called).
1855         When protecting a tls data pointer from the gc, use also the 
1856         thread id in the key.
1857         
1858 Wed Apr 17 18:36:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
1859
1860         * timed-thread.c: avoid race condition when setting the thread to
1861         detached.
1862
1863 2002-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1864
1865         * jit.h: to more #include lines to avoid breaking compilation
1866         under windows when upgrading mingw and w32api to version
1867         1.3 (thanks Dick!).
1868
1869 2002-04-16  Dick Porter  <dick@ximian.com>
1870
1871         * atomic.h: Explanatory comment about lack of 80386 support
1872
1873 2002-04-15  Dick Porter  <dick@ximian.com>
1874
1875         * atomic.h: use xaddl for InterlockedIncrement() and
1876         InterlockedDecrement().  Use cmpxchgl in a loop for
1877         InterlockedExchange() and InterlockedExchangePointer().
1878
1879 Mon Apr 15 13:31:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
1880
1881         * unicode.c: fix unicode_len() to not access uninitialized memory
1882         (and updated to conform to mono code style).
1883
1884 Fri Mar 29 17:15:11 CET 2002 Paolo Molaro <lupus@ximian.com>
1885
1886         * io.c: EEXISTS is ignored for directory creation.
1887         * mono-mutex.h: remove silly "pragma }" that emacs users insert
1888         because they use a broken editor:-)
1889
1890 2002-03-28  Dick Porter  <dick@ximian.com>
1891
1892         * sockets.h: 
1893         * sockets.c: 
1894         * io.c: 
1895         * handles.h: 
1896         * handles.c: Warning cleanups
1897
1898 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
1899
1900         * unicode.h, unicode.c: changed to gunichar2
1901         * io.h, io.c: changed strings to gunichar2*, added
1902         SetFileAttributes(), GetCurrentDirectory(), SetCurrentDirectory(),
1903         some fixes to FindFirstFile() and friends.
1904
1905 2002-03-26  Dick Porter  <dick@ximian.com>
1906
1907         * types.h: Implement the large integer struct
1908
1909         * timefuncs.h:
1910         * timefuncs.c: Dummy functions that don't yet implement
1911         QueryPerformanceCounter() and QueryPerformanceFrequency()
1912
1913         * threads.h:
1914         * threads.c: Implement SleepEx()
1915
1916         * system.h:
1917         * system.c: Beginnings of GetSystemInfo()
1918
1919         * mono-mutex.c (pthread_mutex_timedlock): Fix a ms/ns conversion
1920         thinko
1921
1922         * context.h:
1923         * context.c: Dummy function that doesnt yet implement
1924         GetThreadContext()
1925
1926         * atomic.h: 
1927         * atomic.c: Interlocked functions
1928
1929 Mon Mar 25 13:01:40 CET 2002 Paolo Molaro <lupus@ximian.com>
1930
1931         * threads.c: use a gc-safe hash table to store tls pointers.
1932
1933 2002-03-22  Dick Porter  <dick@ximian.com>
1934
1935         * threads.c: Fix a race condition where a thread can start and
1936         exit before the handle has been properly initialised (no reason
1937         why the handle couldn't be initialised beforehand, so do so)
1938
1939         Fix a ms to ns conversion magnitude thinko.
1940
1941 2002-03-21  Dick Porter  <dick@ximian.com>
1942
1943         * semaphores.c: Fix a problem when waiting for one or more
1944         semaphores, and another semaphore is Released (all waiting
1945         semaphores assumed they were signalled)
1946
1947 2002-03-29  Dan Lewis <dihlewis@yahoo.co.uk>
1948
1949         * io.h, io.c, uglify.h: added MoveFile, CopyFile, CreateDirectory,
1950         RemoveDirectory, GetFileAttributes, GetFileAttributesEx
1951
1952 2002-03-19  Dietmar Maurer  <dietmar@ximian.com>
1953
1954         * threads.c (Sleep): bug fix: 1ms == 1000000ns
1955
1956 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
1957
1958         * io.h, io.c, events.c, mutexes.c, semaphores.c, sockets.c,
1959         threads.c, io.c: added flush method to handles.
1960
1961         * io.c: FlushFileBuffers() and FindFirstFile() functions.
1962
1963 Thu Mar 7 17:21:52 CET 2002 Paolo Molaro <lupus@ximian.com>
1964
1965         * threads.c, timed-thread.c, wait.c: Boehm-GC anable.
1966
1967 2002-02-20  Dick Porter  <dick@ximian.com>
1968
1969         * io-layer.h: Always build without cygwin support on windows
1970
1971 Mon Feb 18 15:50:59 CET 2002 Paolo Molaro <lupus@ximian.com>
1972
1973         * sockets.c: #undef DEBUG.
1974
1975 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
1976
1977         * io-layer.h: conditionally include sys/filio.h and sys/sockio.h
1978         for FIONBIO, FIONREAD, and SIOCATMARK.
1979
1980 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
1981
1982         * sockets.c: conditionally include sys/filio.h and sys/sockio.h
1983         for FIONBIO, FIONREAD, and SIOCATMARK.
1984
1985 2002-02-13  Dick Porter  <dick@ximian.com>
1986
1987         * sockets.c: Implement shutdown and select
1988
1989 2002-02-13  Jeffrey Stedfast  <fejj@ximian.com>
1990
1991         * mono-mutex.[c,h]: New source files that thinly wrap all pthread
1992         functions that take pthread_mutex_t and/or pthread_mutexattr_t
1993         arguments for the sake of portability. Implements recursive
1994         mutexes and pthread_mutex_timedlock.
1995
1996         * critical-sections.c:
1997         * events.c:
1998         * handles.c:
1999         * mutexes.c:
2000         * semaphores.c:
2001         * threads.c:
2002         * timed-thread.c:
2003         * wait.c: Use the mono-mutex wrapper portability functions/macros.
2004
2005         * pthread-compat.[c,h]: Replaced by mono-mutex.[c,h]
2006
2007 2002-01-23  Dick Porter  <dick@ximian.com>
2008
2009         * sockets.c: Networking support, mostly wrapping BSD socket APIs
2010         with handle code, and translating errno into w32 error codes.
2011
2012         * macros.h: Some w32 macros used with the socket support
2013
2014         * error.c: Implemented GetLastError() and SetLastError()
2015
2016         * Makefile.am: Added sockets, with kludge to override some symbols
2017
2018 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
2019
2020         * unicode.c (_wapi_unicode_to_utf8): byteswap UTF16 strings before
2021         passing them to iconv
2022         (_wapi_unicode_to_utf8): only swap bytes on LE systems, remove bug
2023         from previous commit.
2024
2025 2001-12-11  Dick Porter  <dick@ximian.com>
2026
2027         * io.c: Implement DeleteFile(), GetFileTime(), SetFileTime() and
2028         FileTimeToSystemTime().
2029
2030         * unicode.c (unicode_len): Nasty way of finding length of unicode
2031         string with embedded NULLs (counts until two NULLs together).
2032
2033         * mutexes.c (mutex_close): 
2034         * events.c (event_close): Release the internal pthreads resources
2035
2036 2001-11-26  Dick Porter  <dick@ximian.com>
2037
2038         * critical-sections.c:
2039         * events.c:
2040         * handles.c:
2041         * io.c:
2042         * mutexes.c:
2043         * semaphores.c:
2044         * threads.c:
2045         * timed-thread.c:
2046         * wait.c: turn off DEBUG messages
2047
2048 2001-11-22  Dick Porter  <dick@ximian.com>
2049
2050         * handles.c (SignalObjectAndWait): Implement
2051
2052         * wait.c (WaitForSingleObject): Fix case where timeout == 0
2053
2054         * threads.c:
2055         * semaphores.c:
2056         * mutexes.c:
2057         * io.c:
2058         * events.c: Support for SignalObjectAndWait
2059         
2060 2001-11-21  Dick Porter  <dick@ximian.com>
2061
2062         * events.c:
2063         * handles.c:
2064         * mutexes.c:
2065         * semaphores.c:
2066         * threads.c:
2067         * wait.c: Reliable method of returning which handle was signalled
2068         on return from WaitForMultipleObjects().
2069
2070 2001-11-21  Dick Porter  <dick@ximian.com>
2071
2072         * events.c: Implement events
2073
2074 2001-11-15  Dick Porter  <dick@ximian.com>
2075
2076         * mutexes.c: Implement mutexes
2077
2078         * threads.c: 
2079         * semaphores.c: 
2080         * misc.c: Factor out some common code
2081
2082 2001-11-13  Dick Porter  <dick@ximian.com>
2083
2084         * threads.c: Implement TLS.  Implement GetCurrentThreadId(), and
2085         GetCurrentThread() by maintaining a hash of thread handles.
2086
2087         * threads.h: Define thread and process creation flags
2088
2089 2001-11-12  Dick Porter  <dick@ximian.com>
2090
2091         * critical-sections.c: Implement critical sections
2092
2093 2001-11-12  Dick Porter  <dick@ximian.com>
2094
2095         * semaphores.c: Implement semaphores
2096
2097         * wait.c (wait_for_item): Maintain a wait count rather than count
2098         signalled booleans.
2099
2100         * threads.c (thread_wait_multiple): Don't lock the wait item, that
2101         will block other wait threads
2102
2103 2001-11-11  Dick Porter  <dick@ximian.com>
2104
2105         * Makefile.am: Rename some automake variables
2106         (from Nick Drochak <ndrochak@gol.com>)
2107
2108 2001-11-10  Dick Porter  <dick@ximian.com>
2109
2110         * Makefile.am (libwapiincludedir): Fix include destination
2111
2112         * .cvsignore: Ignore generated files
2113
2114 2001-11-10  Dietmar Maurer  <dietmar@ximian.com>
2115
2116         * pthread-compat.c: added some include files to make it compile on
2117         linux.
2118
2119 2001-11-08  Dick Porter  <dick@ximian.com>
2120
2121         * Initial checkin.
2122
2123         This is a library emulating the win32 threading and IO API.