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