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