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