2002-10-07 Dick Porter <dick@ximian.com>
[mono.git] / mono / io-layer / ChangeLog
1 2002-10-07  Dick Porter  <dick@ximian.com>
2
3         * timefuncs.c:
4         * daemon.c: Use a more accurate time source for process start and
5         end times.
6
7 2002-10-03  Dick Porter  <dick@ximian.com>
8
9         * daemon.c:
10         * handles.c:
11         * threads.c:  Fixes for freebsd.  Make sure that mutex and condition
12         creation and deletion happen in the process that owns them, when
13         POSIX shared thread objects aren't supported.  This breaks on
14         freebsd, as pthread_t is a pointer to data.
15
16 2002-10-02  Dick Porter  <dick@ximian.com>
17
18         * shared.c: Use mmap() instead of sysv shm for the shared data.
19
20         * wapi-private.h (_WAPI_HANDLE_VERSION): Reset back to 0, for the
21         new system
22
23         * daemon-private.h: 
24         * daemon.c: mmap()ed regions survive fork, so just pass the
25         pointer to _wapi_daemon_main instead of mapping it again.
26
27 2002-10-01  Dick Porter  <dick@ximian.com>
28
29         * timed-thread.c: Kludge for CREATE_SUSPENDED thread creation.
30         Unfortunately libgc uses the same thread suspend technique that I
31         want to, and the two don't mix: libgc will deadlock when it tries
32         to stop the world if a thread has already been suspended by
33         someone else.  Just do the simple suspended create rather than the
34         general purpose thread suspension for now.
35
36         * threads.c: Pass create flags to the timed_thread create call, to
37         implement suspended thread creation.  ResumeThread() partially
38         implemented, to cope with the case where a newly created but
39         suspended thread is launched.
40
41 2002-09-30  Dick Porter  <dick@ximian.com>
42
43         * sockets.c (ioctlsocket): Set non-blocking mode in a better way,
44         with fcntl.
45
46 2002-09-27  Dick Porter  <dick@ximian.com>
47
48         * semaphores.c: Only include semaphore.h if it's present. Patch
49         for BSD from jmmv@hispabsd.org (Julio Merino).
50
51 2002-09-27  Dick Porter  <dick@ximian.com>
52
53         * processes.c: Pass environment and working directory to the
54         daemon when forking.  Don't let argv[0] be duplicated when looking
55         for the program name.  Implement EnumProcessModules (simple
56         version for now, lsof-style later if needed), GetModuleBaseName,
57         {Get,Set}ProcessWorkingSetSize (just faked, because the vm hints
58         aren't available on Linux).
59
60         * process-private.h: Store the process name, and the working set
61         min and max
62
63         * handles.c:
64         * handles-private.h: New functions to store and retrieve an array
65         of strings in the scratch space
66
67         * daemon.c: Don't miss deleting some handles when a client exits
68         (we used to rely on the client doing the final cleanup, but
69         obviously if the client is no longer there the daemon has to do
70         it).
71
72         Process forking now sets the environment and the working
73         directory.
74
75         * io.c: Don't confuse fd 0 with an unassigned handle struct
76
77         * atomic.h: Add a google cache alternative to the msdn URL
78
79 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
80
81         * sockets.c:
82         (_wapi_recvfrom): added ECONNRESET to the switch.
83
84 2002-09-24  Mark Crichton  <crichton@gimp.org>
85
86         * atomic.h: Yea.  On linux, sparc isn't sparc, it's __sparc__.
87         Added to ifdef.
88
89 2002-09-19  Mark Crichton  <crichton@gimp.org>
90
91         * daemon.c, shared.c: Added NEED_LINK_UNLINK for systems that
92         dont have Linux's abstract filesystem for sockets.
93
94 2002-09-19  Mark Crichton  <crichton@gimp.org>
95
96         * atomic.h: Added SPARC atomic asm code.
97         * daemon.c, handles-private.h, handles.c, wapi-private.h:
98         undefined _POSIX_THREAD_PROCESS_SHARED.  This actually exists on
99         Solaris 9, however, the code paths don't seem to work.  More testing
100         on the shared case is *really* needed.
101
102 2002-09-03  Dick Porter  <dick@ximian.com>
103
104         * threads.h: 
105         * threads.c: Removed PosixKillThread(), because it's not in the
106         w32 api
107
108 2002-08-20  Dick Porter  <dick@ximian.com>
109
110         * handles.c (_wapi_handle_scratch_store): Made stored byte lengths
111         multiples of 4 bytes, to keep header structures aligned.  Needed
112         for sparc, at least. (Patch from crichton@gimp.org)
113
114         * handles.c: Removed 'disable_shm' variable (we've defaulted to
115         building with shm enabled for months now)
116
117 2002-08-19  Dick Porter  <dick@ximian.com>
118
119         * daemon.c: Rewrote the poll() loop to use GIOChannels instead,
120         for legacy NeXT-based systems.
121
122 2002-08-12  Dick Porter  <dick@ximian.com>
123
124         * atomic.h: Rename some parameters to avoid c++ keywords (Patch
125         from Joseph Wenninger <kde@jowenn.at>)
126
127 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
128
129         * threads.c: use fast spinlocks by default
130
131 2002-08-02  Dick Porter  <dick@ximian.com>
132
133         * io.c (GetStdHandle): Add a handle reference when returning a
134         duplicate console handle.  This fixes the unref_handle errors in
135         NUnit.
136
137 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
138
139         * threads.c (TLS_PTHREAD_MUTEX): define this because else some
140         tests does not work
141
142 2002-08-01  Dick Porter  <dick@ximian.com>
143
144         * threads.c: Use atomic spinlocks in TLS functions
145
146         * mono-spinlock.h:
147         * Makefile.am: Added mono-spinlock.h
148
149 2002-07-21  Jeffrey Stedfast  <fejj@ximian.com>
150
151         * daemon-messages.c: #include <sys/types.h> and <sys/sockets.h> -
152         these are needed for sendmsg() and also for struct msghdr (at
153         least on Solaris). Solaris still won't build because struct msghdr
154         doesn't have msg_flags, msg_control, or msg_controllen members.
155         (CMSG_SPACE): Define for systems that don't have it.
156         (CMSG_LEN): Same.
157
158 2002-07-20  Dick Porter  <dick@ximian.com>
159
160         * wapi-private.h:
161         * io-private.h:
162         * io.h:
163         * io.c:
164         * handles.c: Implemented pipe handles
165         
166         * handles.c:
167         * daemon.c: Fixed bug in handle closing.
168
169         * shared.c:
170         * daemon.c: Forked processes now close all open file descriptors.
171
172 Fri Jul 19 19:05:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
173
174         * sockets.h, io-layer.h, critical-sections.h: don't include config.h
175         in header files.
176
177 2002-07-19  Martin Baulig  <martin@gnome.org>
178
179         * threads.c (ExitThread): Call exit() if no threads has been
180         created yet.
181
182 2002-07-17  Dick Porter  <dick@ximian.com>
183
184         * daemon-messages.c: Freebsd fixes from Andreas Kohn
185         <andreas.kohn@gmx.net>
186
187 2002-07-15  Dick Porter  <dick@ximian.com>
188
189         * io.c: Removed bogus console_flush() method, that was just cut
190         and pasted from file_flush when I separated the two handle types.
191
192 2002-07-12  Dick Porter  <dick@ximian.com>
193
194         * io.c (convert_from_flags): Fixed misunderstanding wrt fcntl
195         flags.  Fixes bug 27633.
196
197 2002-07-12  Dick Porter  <dick@ximian.com>
198
199         * wapi-private.h:
200         * handles.c:
201         * daemon.c: Use size of sockaddr_un.sun_path from config.h
202
203 2002-07-12  Dick Porter  <dick@ximian.com>
204
205         * processes.c (CreateProcess): Send stdin, stdout and stderr
206         handles if the startup info doesnt specify new ones
207
208         * io.c (GetStdHandle): Return the same handle when the same
209         standard handle is requested
210
211         * handles.c: Pass file descriptors when forking
212
213         * daemon.c: Use supplied file descriptors when forking a new
214         process
215
216         * daemon-messages.h: 
217         * daemon-messages.c: Pass stdin, stdout and stderr file
218         descriptors to the daemon (used when forking)
219
220 2002-07-11  Miguel de Icaza  <miguel@ximian.com>
221
222         * daemon.c (_wapi_daemon_main): Use sizeof
223         (main_socket_address.sun_path) instead of hardcoded 108 value.
224
225         * handles.c (shared_init): Use sizeof
226         (shared_socket_address.sun_path) instead of hardcoded 108 value.
227
228 2002-07-10  Dennis Haney  <davh@davh.dk>
229
230         * shared.c:
231         * handles.c:
232         * daemon.c: Lots of documentation, some added error checking, and
233         code readability improvements.
234
235         * daemon-messages.h: Add the Error request type to improve error
236         checking.
237
238         * daemon-messages.c: Do a bit more error checking on send() and
239         recv(), and log errors with a higher severity level.
240
241 2002-07-04  Dick Porter  <dick@ximian.com>
242
243         * daemon.c (process_process_fork): Fix argument handling, due to
244         buggy understanding of g_strsplit() behaviour.
245
246 2002-07-03  Dick Porter  <dick@ximian.com>
247
248         * threads.h:
249         * threads.c: Implement OpenThread().  Define access-control values
250         for thread handles.
251
252         * wapi.h:
253         * processes.h:
254         * access.h:
255         * Makefile.am: Added access.h, to hold shared access-control
256         definitions
257
258 2002-07-02  Dick Porter  <dick@ximian.com>
259
260         * wapi-private.h (_WAPI_HANDLE_VERSION): New protocol version
261         
262 2002-07-02  Dick Porter  <dick@ximian.com>
263
264         * handles.c (shared_init): Make a second attempt to contact the
265         daemon if the shared memory attach succeeds, but the connect()
266         fails. (This copes with the daemon crashing without cleaning up
267         the shared memory.)
268
269         * Makefile.am: 
270         * daemon-private.h:
271         * daemon.c:
272         * shared.c (_wapi_shm_attach): Don't exec() anything when we fork
273         the daemon, it's now built into the library.
274
275 2002-06-25  Dick Porter  <dick@ximian.com>
276
277         * handles.c:
278         * handles-private.h:
279         * daemon-messages.h:
280         * daemon.c: Process forking and handle data management
281
282         * processes.h:
283         * process-private.h:
284         * processes.c: Process forking and other support functions
285
286 2002-06-25  Dick Porter  <dick@ximian.com>
287
288         * versioninfo.h: PE resource decoding
289
290         * unicode.c (_wapi_unicode_to_utf8): g_utf16_to_utf8 doesnt need
291         to be told the string length
292
293         * io.c: Removed the ACTUALLY_DO_UNICODE option.  Fixed some leaks.
294         Moved _wapi_time_t_to_filetime and the WapiFileTime typedef to
295         timefuncs.c
296
297 2002-06-12  Dick Porter  <dick@ximian.com>
298
299         * daemon.c: 
300         * daemon-messages.c: Handle SIGPIPE in a non-stupid way in the
301         daemon, if MSG_NOSIGNAL isn't available.  Thanks to Jaroslaw
302         Kowalski <jarek@atm.com.pl> for pointing out the bogosity.
303
304 2002-06-10  Jaroslaw Kowalski <jarek@atm.com.pl>
305
306         * sockets.c, daemon-messages.c: Prevent SIGPIPE from being raised
307         when writing to a closed socket.
308
309 2002-06-08  Jeffrey Stedfast  <fejj@ximian.com>
310
311         * mono-mutex.c (mono_once): New convenience function for my
312         previous fix.
313
314         * handles.c:
315         * error.c: 
316         * critical-sections.c: 
317         * threads.c: 
318         * sockets.c: 
319         * semaphores.c: 
320         * processes.c: 
321         * mutexes.c: 
322         * io.c: 
323         * events.c: 
324         * atomic.c: Use mono_once() rather than pthread_once().
325
326 2002-06-06  Jeffrey Stedfast  <fejj@ximian.com>
327
328         * handles.c (_wapi_handle_new): pthread_once() is not atomic, so
329         if multiple threads all try to call _wapi_handle_new() before the
330         shared data has been initialized, it is possible that we could get
331         into a condition where shared_init() is being executed and later
332         threads will pass by pthread_once() due to the fact that it has
333         already been called and so therefor will attempt to use the shared
334         data before it has been completely initialized. If we instead use
335         a standard mutex locking mechanism around shared_init(), we can
336         avoid the situation entirely. By wrapping the mutex locking in a
337         check to see if we've already initialized the data, we can even
338         avoid wasting resources by having to lock/unlock the mutex in any
339         later calls (the only time we'd have to worry about
340         locking/unlocking is the initial race to call shared_init() at
341         startup).
342
343 Sat Jun 1 13:27:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
344
345         * atomic.h: inline asm fixes from Dennis Haney (davh@davh.dk).
346
347 Fri May 31 16:21:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
348
349         * daemon.c, handles.c: rename "sun" local var since it's apparently
350         a #define on Solaris.
351
352 Fri May 31 15:40:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
353
354         * daemon-messages.c: work-around MSG_NOSIGNAL missing on some
355         platforms.
356
357 2002-05-15  Dick Porter  <dick@ximian.com>
358
359         * wait.c: Fix a deadlock in WaitForMultipleObjects
360
361 2002-05-14  Dick Porter  <dick@ximian.com>
362
363         * io.c: Fix a cut&paste error, found by
364         Jaroslaw Kowalski <jarek@atm.com.pl>
365
366 2002-05-10  Dan Lewis  <dihlewis@yahoo.co.uk>
367
368         * io.c: Nasty typo.
369
370 2002-05-09  Dick Porter  <dick@ximian.com>
371
372         * threads.c: 
373         * semaphores.c: 
374         * processes.c: 
375         * mutexes.c: 
376         * handles-private.h: 
377         * events.c: 
378         * Makefile.am: Remove now-unused file wait-private.h
379
380 2002-05-08  Dick Porter  <dick@ximian.com>
381
382         * shared.c: Better error messages, and report when daemon
383         connection fails rather than blocking forever.  Do some more
384         shared memory sanity checking.
385
386         * handles.c: Better error messages when connecting to shared
387         memory and the handle daemon.  Fall back to non-shared handles if
388         an error occurs.  Set the default back to 'shared handles'.  Fix a
389         crashing bug in scratch space allocation that mangled the block
390         headers.
391
392 2002-05-07  Miguel de Icaza  <miguel@ximian.com>
393
394         * handles.c (shared_init): Disable SHM for now, people have too
395         many problems with this, and the diagnostics are not helping.
396
397 2002-05-06  Dan Lewis  <dihlewis@yahoo.co.uk>
398
399         * io.c: CreateFile sets win32 last error.
400
401 2002-05-05  Dick Porter  <dick@ximian.com>
402
403         * wapi-private.h: 
404         * handles-private.h:
405         * io.c: 
406         * io-private.h:
407         * mutexes.c: 
408         * mutex-private.h: 
409         * processes.c: 
410         * process-private.h: 
411         * semaphores.c: 
412         * semaphore-private.h: 
413         * sockets.c: 
414         * socket-private.h: 
415         * events.c: 
416         * event-private.h: Simplify the WapiHandleOps struct: take out all
417         the file-specific entries, leaving just the items that operate on
418         handles themselves.  Split the close operation into shared and
419         private parts: shared close is called by the daemon.
420
421         * handles.c: As above, but also pass handle allocation, ref and
422         unref operations to the daemon.  Populate the handle_ops array at
423         compile time, because the daemon needs to call ops on handles too.
424         Don't bother to track open handle counts any more, the daemon does
425         that.
426         
427         * threads.c: 
428         * thread-private.h: As above, but also make the thread data
429         handle-private.
430
431         * shared.c: Fork a handle daemon if the calling process created
432         the shared memory segment.
433
434         * daemon.c:
435         * daemon-messages.c:
436         * daemon-messages.h:
437         * Makefile.am: Build a daemon to manage handle allocation and
438         destruction without needing to lock the shared memory
439
440 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
441
442         * atomic.c: Changed to use a normal mutex rather than a spinlock
443         since a lot of platforms seem to not have them :\
444
445 2002-04-30  Dick Porter  <dick@ximian.com>
446
447         * Completely rewrote the handle waiting code: removed the helper
448         thread and its attendant complexity.  All handle waiting is now
449         abstracted into the WaitForSingleObject() and
450         WaitForMultipleObjects() functions.
451
452         * Implemented inter-process sharing of handles using sysv shared
453         memory.  This makes handles even more opaque, with a handle now
454         just an index into an array.
455         
456 2002-04-25  Dan Lewis  <dihlewis@yahoo.co.uk>
457
458         * io.c: unitialized pointer in GetCurrentDirectory.
459
460 Sat Apr 20 13:37:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
461
462         * threads.c: destroy the mutex at thread destruction
463         (if/when thread destruction code will be actually called).
464         When protecting a tls data pointer from the gc, use also the 
465         thread id in the key.
466         
467 Wed Apr 17 18:36:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
468
469         * timed-thread.c: avoid race condition when setting the thread to
470         detached.
471
472 2002-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
473
474         * jit.h: to more #include lines to avoid breaking compilation
475         under windows when upgrading mingw and w32api to version
476         1.3 (thanks Dick!).
477
478 2002-04-16  Dick Porter  <dick@ximian.com>
479
480         * atomic.h: Explanatory comment about lack of 80386 support
481
482 2002-04-15  Dick Porter  <dick@ximian.com>
483
484         * atomic.h: use xaddl for InterlockedIncrement() and
485         InterlockedDecrement().  Use cmpxchgl in a loop for
486         InterlockedExchange() and InterlockedExchangePointer().
487
488 Mon Apr 15 13:31:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
489
490         * unicode.c: fix unicode_len() to not access uninitialized memory
491         (and updated to conform to mono code style).
492
493 Fri Mar 29 17:15:11 CET 2002 Paolo Molaro <lupus@ximian.com>
494
495         * io.c: EEXISTS is ignored for directory creation.
496         * mono-mutex.h: remove silly "pragma }" that emacs users insert
497         because they use a broken editor:-)
498
499 2002-03-28  Dick Porter  <dick@ximian.com>
500
501         * sockets.h: 
502         * sockets.c: 
503         * io.c: 
504         * handles.h: 
505         * handles.c: Warning cleanups
506
507 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
508
509         * unicode.h, unicode.c: changed to gunichar2
510         * io.h, io.c: changed strings to gunichar2*, added
511         SetFileAttributes(), GetCurrentDirectory(), SetCurrentDirectory(),
512         some fixes to FindFirstFile() and friends.
513
514 2002-03-26  Dick Porter  <dick@ximian.com>
515
516         * types.h: Implement the large integer struct
517
518         * timefuncs.h:
519         * timefuncs.c: Dummy functions that don't yet implement
520         QueryPerformanceCounter() and QueryPerformanceFrequency()
521
522         * threads.h:
523         * threads.c: Implement SleepEx()
524
525         * system.h:
526         * system.c: Beginnings of GetSystemInfo()
527
528         * mono-mutex.c (pthread_mutex_timedlock): Fix a ms/ns conversion
529         thinko
530
531         * context.h:
532         * context.c: Dummy function that doesnt yet implement
533         GetThreadContext()
534
535         * atomic.h: 
536         * atomic.c: Interlocked functions
537
538 Mon Mar 25 13:01:40 CET 2002 Paolo Molaro <lupus@ximian.com>
539
540         * threads.c: use a gc-safe hash table to store tls pointers.
541
542 2002-03-22  Dick Porter  <dick@ximian.com>
543
544         * threads.c: Fix a race condition where a thread can start and
545         exit before the handle has been properly initialised (no reason
546         why the handle couldn't be initialised beforehand, so do so)
547
548         Fix a ms to ns conversion magnitude thinko.
549
550 2002-03-21  Dick Porter  <dick@ximian.com>
551
552         * semaphores.c: Fix a problem when waiting for one or more
553         semaphores, and another semaphore is Released (all waiting
554         semaphores assumed they were signalled)
555
556 2002-03-29  Dan Lewis <dihlewis@yahoo.co.uk>
557
558         * io.h, io.c, uglify.h: added MoveFile, CopyFile, CreateDirectory,
559         RemoveDirectory, GetFileAttributes, GetFileAttributesEx
560
561 2002-03-19  Dietmar Maurer  <dietmar@ximian.com>
562
563         * threads.c (Sleep): bug fix: 1ms == 1000000ns
564
565 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
566
567         * io.h, io.c, events.c, mutexes.c, semaphores.c, sockets.c,
568         threads.c, io.c: added flush method to handles.
569
570         * io.c: FlushFileBuffers() and FindFirstFile() functions.
571
572 Thu Mar 7 17:21:52 CET 2002 Paolo Molaro <lupus@ximian.com>
573
574         * threads.c, timed-thread.c, wait.c: Boehm-GC anable.
575
576 2002-02-20  Dick Porter  <dick@ximian.com>
577
578         * io-layer.h: Always build without cygwin support on windows
579
580 Mon Feb 18 15:50:59 CET 2002 Paolo Molaro <lupus@ximian.com>
581
582         * sockets.c: #undef DEBUG.
583
584 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
585
586         * io-layer.h: conditionally include sys/filio.h and sys/sockio.h
587         for FIONBIO, FIONREAD, and SIOCATMARK.
588
589 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
590
591         * sockets.c: conditionally include sys/filio.h and sys/sockio.h
592         for FIONBIO, FIONREAD, and SIOCATMARK.
593
594 2002-02-13  Dick Porter  <dick@ximian.com>
595
596         * sockets.c: Implement shutdown and select
597
598 2002-02-13  Jeffrey Stedfast  <fejj@ximian.com>
599
600         * mono-mutex.[c,h]: New source files that thinly wrap all pthread
601         functions that take pthread_mutex_t and/or pthread_mutexattr_t
602         arguments for the sake of portability. Implements recursive
603         mutexes and pthread_mutex_timedlock.
604
605         * critical-sections.c:
606         * events.c:
607         * handles.c:
608         * mutexes.c:
609         * semaphores.c:
610         * threads.c:
611         * timed-thread.c:
612         * wait.c: Use the mono-mutex wrapper portability functions/macros.
613
614         * pthread-compat.[c,h]: Replaced by mono-mutex.[c,h]
615
616 2002-01-23  Dick Porter  <dick@ximian.com>
617
618         * sockets.c: Networking support, mostly wrapping BSD socket APIs
619         with handle code, and translating errno into w32 error codes.
620
621         * macros.h: Some w32 macros used with the socket support
622
623         * error.c: Implemented GetLastError() and SetLastError()
624
625         * Makefile.am: Added sockets, with kludge to override some symbols
626
627 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
628
629         * unicode.c (_wapi_unicode_to_utf8): byteswap UTF16 strings before
630         passing them to iconv
631         (_wapi_unicode_to_utf8): only swap bytes on LE systems, remove bug
632         from previous commit.
633
634 2001-12-11  Dick Porter  <dick@ximian.com>
635
636         * io.c: Implement DeleteFile(), GetFileTime(), SetFileTime() and
637         FileTimeToSystemTime().
638
639         * unicode.c (unicode_len): Nasty way of finding length of unicode
640         string with embedded NULLs (counts until two NULLs together).
641
642         * mutexes.c (mutex_close): 
643         * events.c (event_close): Release the internal pthreads resources
644
645 2001-11-26  Dick Porter  <dick@ximian.com>
646
647         * critical-sections.c:
648         * events.c:
649         * handles.c:
650         * io.c:
651         * mutexes.c:
652         * semaphores.c:
653         * threads.c:
654         * timed-thread.c:
655         * wait.c: turn off DEBUG messages
656
657 2001-11-22  Dick Porter  <dick@ximian.com>
658
659         * handles.c (SignalObjectAndWait): Implement
660
661         * wait.c (WaitForSingleObject): Fix case where timeout == 0
662
663         * threads.c:
664         * semaphores.c:
665         * mutexes.c:
666         * io.c:
667         * events.c: Support for SignalObjectAndWait
668         
669 2001-11-21  Dick Porter  <dick@ximian.com>
670
671         * events.c:
672         * handles.c:
673         * mutexes.c:
674         * semaphores.c:
675         * threads.c:
676         * wait.c: Reliable method of returning which handle was signalled
677         on return from WaitForMultipleObjects().
678
679 2001-11-21  Dick Porter  <dick@ximian.com>
680
681         * events.c: Implement events
682
683 2001-11-15  Dick Porter  <dick@ximian.com>
684
685         * mutexes.c: Implement mutexes
686
687         * threads.c: 
688         * semaphores.c: 
689         * misc.c: Factor out some common code
690
691 2001-11-13  Dick Porter  <dick@ximian.com>
692
693         * threads.c: Implement TLS.  Implement GetCurrentThreadId(), and
694         GetCurrentThread() by maintaining a hash of thread handles.
695
696         * threads.h: Define thread and process creation flags
697
698 2001-11-12  Dick Porter  <dick@ximian.com>
699
700         * critical-sections.c: Implement critical sections
701
702 2001-11-12  Dick Porter  <dick@ximian.com>
703
704         * semaphores.c: Implement semaphores
705
706         * wait.c (wait_for_item): Maintain a wait count rather than count
707         signalled booleans.
708
709         * threads.c (thread_wait_multiple): Don't lock the wait item, that
710         will block other wait threads
711
712 2001-11-11  Dick Porter  <dick@ximian.com>
713
714         * Makefile.am: Rename some automake variables
715         (from Nick Drochak <ndrochak@gol.com>)
716
717 2001-11-10  Dick Porter  <dick@ximian.com>
718
719         * Makefile.am (libwapiincludedir): Fix include destination
720
721         * .cvsignore: Ignore generated files
722
723 2001-11-10  Dietmar Maurer  <dietmar@ximian.com>
724
725         * pthread-compat.c: added some include files to make it compile on
726         linux.
727
728 2001-11-08  Dick Porter  <dick@ximian.com>
729
730         * Initial checkin.
731
732         This is a library emulating the win32 threading and IO API.
733
734