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