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