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