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