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