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