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