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