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