* metadata.c (mono_metadata_parse_method_signature_full): Remove a dead store.
[mono.git] / mono / io-layer / ChangeLog
1
2 Tue Dec 13 11:41:49 GMT 2005 Paolo Molaro <lupus@ximian.com>
3
4         * shared.c: fallback to private mmap when shared mmap doesn't work
5         (like on jffs).
6
7 2005-12-06  Dick Porter  <dick@ximian.com>
8
9         * wapi-private.h: 
10         * handles.c: 
11         * semaphore-private.h: 
12         * semaphores.c: Implement named semaphores
13
14 2005-11-24  Dick Porter  <dick@ximian.com>
15
16         * processes.c (GetProcessId): Implement GetProcessId()
17
18 2005-11-17  Dick Porter  <dick@ximian.com>
19
20         * processes.h: 
21         * processes.c: Implement ShellExecuteEx as a wrapper around
22         CreateProcess.
23
24 2005-11-11  Dick Porter  <dick@ximian.com>
25
26         * threads.c: Give mutex abandoning its own exported function, so
27         it can be called when the runtime is cleaning up.
28
29         * handles.c (_wapi_search_handle_namespace): Do a handle
30         collection befre starting to check namespace strings, so that any
31         stale cruft gets removed.
32
33 2005-11-11  Dick Porter  <dick@ximian.com>
34
35         * threads.c: Move thread handles back into the shared space.
36
37         * handles.c (_wapi_handle_unref): Add support for shared handles
38         with close() handlers
39
40 2005-11-04  Dick Porter  <dick@ximian.com>
41
42         * sockets.c (ioctlsocket): Use select instead of if to avoid a
43         type promotion problem on 64bit freebsd.  Based on patch by Lou
44         Kamenov <kamenovl@gmail.com>, fixes bug 76447.
45
46 2005-11-04  Dick Porter  <dick@ximian.com>
47
48         * io.c (file_write): Only do the file locking if
49         MONO_STRICT_IO_EMULATION is set.
50
51 2005-10-21  Dick Porter  <dick@ximian.com>
52
53         * processes.c: 
54         * handles.c (_wapi_lookup_handle): Cope when the shared part of a
55         handle has been deleted.
56         (_wapi_handle_unref): And when the deleted shared part is pointed
57         to as a handle is deleted
58
59 2005-10-20  Dick Porter  <dick@ximian.com>
60
61         * processes.c (process_set_current): If the expected process
62         handle slot doesn't contain the correct pid, create a new handle.
63
64         * handles.c (_wapi_search_handle): When the search doesn't find
65         anything, return failure instead of the last handle we looked at.
66         (_wapi_handle_ref, _wapi_handle_unref): Don't try to ref or unref
67         unused handles (makes tracking refcounting bugs easier.)
68
69 2005-10-19  Dick Porter  <dick@ximian.com>
70
71         * handles.c:
72         * handles-private.h:
73         * wapi-private.h: 
74         * processes.c: 
75         * mutexes.c:
76         * collection.c (_wapi_handle_collect): Remove the shared handle
77         indirection layer, and use locking instead.  Delete other
78         complexity that is no longer needed.  Refcount shared handles and
79         delete them when needed, but keep the timestamps so that orphaned
80         handles will be cleaned up eventually.
81
82         * shared.c (_wapi_shm_file): Add processor, OS and struct size
83         info to the shared file names, to cope with dual-boot and 32/64bit
84         size issues.  Fixes bug 75839.
85
86         * wait.c (WaitForMultipleObjectsEx): No need to distinguish
87         between shared handles and private, as the wait functions cope
88         with both together now.
89
90 2005-10-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
91
92         * io.c: removed NO_SIGPIPE macro.
93         * sockets.c: no need for MSG_NOSIGNAL or ignoring SIGPIPE.
94
95 2005-10-11  Dick Porter  <dick@ximian.com>
96
97         * sockets.c (_wapi_getsockopt): Translate SO_ERROR results into
98         w32 error codes.
99
100         * error.c (errno_to_WSA): Don't return a bogus error if someone
101         asks to translate errno 0.
102
103 2005-10-11  Dick Porter  <dick@ximian.com>
104
105         * handles.c: Fix several race conditions
106
107 2005-10-11 Miguel de Icaza <miguel@novell.com>
108
109         * io.c: no need to block SIGPIPE anymore, as it is ignored.
110
111 2005-10-05  Dick Porter  <dick@ximian.com>
112
113         * threads.c (_wapi_thread_own_mutex, _wapi_thread_disown_mutex):
114         Keep a reference to mutexes owned by threads, so they won't be
115         destroyed prematurely.  Fixes dotmsnclient crash.
116
117 2005-09-26  Sebastien Pouliot  <sebastien@ximian.com>
118
119         * io.c: Apply patch from #76192 (Can't write files past 2gb on AMD64 
120         (x86_64)) for Brion on IRC (Dick approved it).
121
122 2005-09-23  Dick Porter  <dick@ximian.com>
123
124         * processes.c: Don't wait for processes that have already been
125         signalled; also fix typo.
126
127         * handles.c: Improve locking inside new handle and handle
128         searching functions.
129
130 2005-09-20  Dick Porter  <dick@ximian.com>
131
132         * collection.c: 
133         * processes.c: Periodically waitpid for known process IDs.  Fixes
134         bug 74870.
135
136 2005-09-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
137
138         * io.c:
139         (CreateFile): if the file is a named pipe, treat the handle as a pipe,
140         not as a file. Fixes bug #76075.
141
142 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
143
144         * atomic.h: Add support for intel icc.
145
146 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
147
148         * io-layer.h: Include winbase.h not WinBase.h.
149
150 2005-08-19  Dick Porter  <dick@ximian.com>
151
152         * threads.c, threads.h, thread-private.h: Use a gsize to store the
153         thread ID, so it can hold a 64 bit value if needed.
154
155 2005-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
156
157         * error.c: map ENOENT to WSAECONNREFUSED. It might happen when
158         connecting to unix sockets. Closes bug #75632.
159
160 2005-07-05  Dick Porter  <dick@ximian.com>
161
162         * io.c: Make sure SIGPIPE is ignored when calling write(2).
163         Prevents the runtime exiting when writing to a closed pipe,
164         fixing bug 75468.
165
166 2005-06-30  Dick Porter  <dick@ximian.com>
167
168         * shared.c (_wapi_shm_semaphores_init): Add some helpful error
169         messages when semget () fails due to lack of resources.
170
171 2005-06-21  Dick Porter  <dick@ximian.com>
172
173         * mutex-private.h:
174         * thread-private.h:
175         * mutexes.c: 
176         * threads.c: Keep a list of owned mutexes in each thread handle,
177         so that it is easier to abandon them when the thread exits.
178         Removes a bottleneck when multiple threads are finishing in
179         parallel.
180
181 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
182
183         * io.c: (GetLogicalDrives) when a bogus line is read, don't leak memory.
184         When the buffer has not enough space, close the file before returning.
185
186 2005-06-09  Duncan Mak  <duncan@novell.com>
187
188         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
189         all public headers. Fixes #74919.
190
191 2005-05-30  Zoltan Varga  <vargaz@freemail.hu>
192
193         * atomic.h: Add IA64 atomic ops.
194
195 2005-05-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
196
197         * processes.c: make ExitCode be valid even if the user didn't call
198         WaitForExit() and is just polling on HasExited.
199
200 2005-05-17  Dick Porter  <dick@ximian.com>
201
202         * io.c (file_getfilesize): Clear the error value, so that files
203         with sizes with the low bits 0xFFFFFFFF can be distinguished from
204         a genuine error.
205
206 2005-05-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
207
208         * shared.c: forgot to ignore a warning.
209
210 2005-05-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
211
212         * shared.c: don't display warnings after reboots.
213
214 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
215
216         * sockets.c: on windows, getsockopt/setsockopt for send/receive timeout
217         use an integer in milliseconds. We were using a struct timeval.
218
219 2005-05-06  Dick Porter  <dick@ximian.com>
220
221         * handles-private.h: 
222         * mutexes.c: 
223         * wapi-private.h: 
224         * shared.h:
225         * shared.c: 
226         * wait.c: 
227         * handles.c: 
228         * collection.h: Use SysV semaphores for managing access to the
229         shared memory - in return for the ludicrous api we get
230         synchronisation primitives that can be cleaned up by the kernel
231         even when a process quits unexpectedly.  This removes the
232         timestamp issues.
233
234 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
235
236         * handles.c: Always use polling in the waits, since
237         mono_cond_timedwait can't be interruped by the thread abort signal.
238
239 2005-04-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
240
241         * events.c: calling Set on AutoResetEvent several times has the same
242         effect as calling it only once if no thread is waiting for it.
243
244 2005-04-29  Dick Porter  <dick@ximian.com>
245
246         * processes.c (EnumProcesses): Use a GArray instead of a GPtrArray
247         now it's storing pids not handles, also fixes memory leak caused
248         by unclear glib documentation.
249
250         * sockets.c (WSACleanup): Remove unused variable
251
252 2005-04-29  Dick Porter  <dick@ximian.com>
253
254         * handles.c (_wapi_handle_check_share_by_pid): For systems that
255         don't have file descriptor info in /proc check that the original
256         opener of a file is still there, if a share violation would
257         otherwise happen.
258
259 2005-04-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
260
261         * handles.c:
262         * handles-private.h: added _wapi_handle_forecch that loops through all
263         the handles and call a callback function when a handle of the given
264         type is found.
265
266         * sockets.c: no need to keep open sockets in an array, as we have them 
267         in the handles structure.
268
269         Fixes bug #74755.
270
271 2005-04-28  Dick Porter  <dick@ximian.com>
272
273         * processes.c: Cope with handles that are only around for as long
274         as the search is running.  If we're searching for process handles,
275         check to see if the process is still running and signal it if not.
276
277         * handles.c (_wapi_search_handle): Search in the shared space as
278         well.  Fixed bug 74752.
279
280         * mutexes.c:
281         * handles.c (_wapi_handle_new_from_offset):
282         _wapi_handle_new_for_existing_ns () was doing exactly the same as
283         this, so deleted it.
284
285 2005-04-26  Dick Porter  <dick@ximian.com>
286
287         * handles.c: Fix stupid thinko where if a new shared handle is
288         created but a collection was needed to free some space, it
289         returned an error anyway.  Should fix the messages shown in bug
290         74659.
291
292 2005-04-25  Dick Porter  <dick@ximian.com>
293
294         * handles.c (_wapi_handle_check_share): Only consider mono
295         processes when looking to see if a file is still being held open,
296         while checking share permissions.
297
298 2005-04-25  Dick Porter  <dick@ximian.com>
299
300         * sockets.c: 
301         * io.c: 
302         * wapi-private.h (struct _WapiHandleOps): 
303         * handles.c (_wapi_handle_unref): When destroying handles, save
304         the handle data and call the close function only after the array
305         slot has been cleared.  This prevents race conditions with file
306         descriptors, fixing bug 74713.
307
308         * mutexes.c: Delete the handle close functions, they didn't do
309         anything anyway
310
311         * error.c (_wapi_get_win32_file_error): Add a mapping for EINTR so
312         the "Unknown error" g_warning doesn't get displayed.
313
314 2005-04-25  Dick Porter  <dick@ximian.com>
315
316         * wapi-private.h: 
317         * threads.c: Make thread handles process-private for now to take
318         some of the space pressure off the shared memory, while I work on
319         a real fix.
320
321 2005-04-21  Dick Porter  <dick@ximian.com>
322
323         * handles.c (_wapi_handle_check_share): Make sure there is a "fd"
324         dir in /proc before blowing away handle info.  Fixes bug 74649.
325
326 2005-04-21  Dick Porter  <dick@ximian.com>
327
328         * wait.c (WaitForMultipleObjectsEx): Implement special waits
329
330         * handles.c (_wapi_handle_wait_signal_poll_share): Don't return a
331         timeout, just wait briefly for the private signals and let the
332         waiting thread test again.  This prevents us missing shared
333         signals.
334
335 2005-04-21  Dick Porter  <dick@ximian.com>
336
337         * collection.h (_WAPI_HANDLE_COLLECTION_EXPIRED_INTERVAL): Reduce
338         the time before a slot is considered too old and deleted.  This is
339         a workaround while I come up with a proper fix.
340
341 2005-04-21  Dick Porter  <dick@ximian.com>
342
343         * mutexes.c: 
344         * processes.c: 
345         * threads.c: 
346         * handles.c (_wapi_handle_new): Turn assertions into errors.
347
348         * collection.c (_wapi_handle_collect): Use symbols not magic
349         numbers for timeout values
350
351 2005-04-19  Dick Porter  <dick@ximian.com>
352
353         * mutexes.c: 
354         * wait.c: 
355         * handles.c (_wapi_handle_count_signalled_handles)
356         * handles-private.h (_wapi_handle_shared_lock_handle): Use new
357         shared handle locks in critical sections.
358
359         * handles.c (_wapi_handle_new_for_existing_ns): Reuse old handles
360         if there is already one there.
361         
362         * handles.c (_wapi_handle_ref): It was possible for a process to
363         exit before getting around to updating shared handle timestamps,
364         so do it here too.
365
366 Tue Apr 19 16:25:47 CEST 2005 Paolo Molaro <lupus@ximian.com>
367
368         * threads.c: fix lookup of the thread id in the has table:
369         always use the id value, not the pointer to the id.
370
371 2005-04-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
372
373         * handles.c: fix handle returned in _wapi_handle_search_handle. Dick
374         pointed it out.
375
376 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
377
378         * io-layer/sockets.c: FIONBIO with a TRUE argument means we want
379         non-blocking IO, not the other way around.
380
381 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
382
383         * handles.c:
384         * io.c:
385         * handles-private.h: GetFileType wasn't checking if we have memory
386         allocated for the handle before dereferencing it. Fixes a FileStream
387         nunit test.
388
389 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
390
391         * handles.c:
392         * processes.c:
393         * handles-private.h: we were calling g_renew to expand the handle array,
394         but that might move the memory and we might have pthread conditions or
395         mutexes in the original memory area that are being used. Now instead of
396         expanding an existing array, we just create new ones and keep a list of
397         them. Access to _wapi_private_handles had to be modified accordingly.
398
399 2005-04-15  Dick Porter  <dick@ximian.com>
400
401         * collection.c: FreeBSD needs more than PTHREAD_STACK_MIN
402
403 2005-04-14  Raja R Harinath  <rharinath@novell.com>
404
405         * wapi-private.h: Remove reference to 'daemon-private.h'.
406
407 Wed Apr 13 13:12:33 EDT 2005 Paolo Molaro <lupus@ximian.com>
408
409         * atomic.h: applied patch from mass@akuma.org (David Waite)
410         to fix InterlockedExchangeAdd.
411         Fixed a few other functions, including InterlockedCompareExchange()
412         which was miscompiled by gcc with optimizations enabled.
413
414 2005-04-13  Dick Porter  <dick@ximian.com>
415
416         * io.c (share_check): 
417         * handles.c (_wapi_handle_check_share): Refine the file check so
418         that sharing violations within the same process don't cause
419         assertion failures.
420
421 2005-04-13  Dick Porter  <dick@ximian.com>
422
423         * io.c (FindFirstFile): Fix bugs introduced with the merge (bug
424         74586)
425
426 2005-04-12  Dick Porter  <dick@ximian.com>
427         
428         The daemon-less io-layer.  Extensive lowlevel changes in
429         handles.c, requiring some corresponding changes in other files
430         calling these functions.  Private_foo structures have been
431         eliminated.
432
433         File descriptor handling differences account for most of the
434         changes in io.c and sockets.c.
435
436         Other highlights:
437         
438         * mutexes.c: Named mutexes are now a distinct type.
439         * atomic.h: Fix a PPC uninitialised variable warning.
440         * wait.c: Check conditions before waiting on a condition variable.
441         * processes.c: Handle process fork and wait without a daemon
442         (though this has the limitation of only being able to wait for
443         child processes.)
444
445 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
446
447         * io-private.h:
448         * threads.c:
449         * threads.h:
450         * io.c:
451         * sockets.c:
452         * sockets.h: removed dead code that deals with async IO.
453
454 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
455
456         * atomic.c (InterlockedIncrement): Fix fallback implementation of
457         InterlockedIncrement and InterlockedDecrement. Fixes #74228.
458
459 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
460
461         * io-layer.h: Add required header files for compiling with VS.NET.
462
463 2005-03-17 Miguel de Icaza <miguel@novell.com>
464
465         * io.c: don't fail on NFS when there are no more locks available.
466
467 2005-03-09  Dick Porter  <dick@ximian.com>
468
469         * error.c (_wapi_get_win32_file_error): ENFILE and EMFILE should
470         map to ERROR_TOO_MANY_OPEN_FILES, not ERROR_NO_MORE_FILES.  Fixes
471         bug 72671.
472
473 2005-03-09  Dick Porter  <dick@ximian.com>
474
475         * daemon.c (process_process_fork): Initialise the handle data
476         before using it in the error case.  This is probably the error
477         we're working around in the previous change.  Spotted by Taru Jain
478         <tjain@novell.com> and Hemanth Yamijala <YHemanth@novell.com>.
479
480 2005-03-07  Dick Porter  <dick@ximian.com>
481
482         * daemon.c: It looks like g_shell_parse_argv() can return
483         argv[0]=NULL somehow, yet still not give an error.  Make sure we
484         don't pass NULL to strrchr(), working around a segfault that
485         showed up on ZLM testing.
486
487 2005-03-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
488
489         * sockets.c: translate EINPROGRESS to EWOULDBLOCK in connect. This is
490         the expected error code showed by the test case in bug #73053.
491
492 2005-02-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
493
494         * io.c: another leftover.
495
496 Fri Feb 18 17:37:29 CET 2005 Paolo Molaro <lupus@ximian.com>
497
498         * io.c: fixed logic in checking errno in rev 40815.
499
500 Fri Feb 18 16:00:29 CET 2005 Paolo Molaro <lupus@ximian.com>
501
502         * threads.c: we don't depend on the GC checking tls
503         slots anymore.
504         * processes.c: remove unused ref to GC headers.
505
506 Thu Feb 17 19:57:11 CET 2005 Paolo Molaro <lupus@ximian.com>
507
508         * io.c: remove _wapi_thread_cur_apc_pending () checks
509         when the siscall should return immediatly and handle
510         the case when a syscall is interrupted without
511         erroring out, but returning a 0 read/write if possible.
512         Still the cases of read from file need to be handled.
513
514 Tue Feb 8 18:28:11 CET 2005 Paolo Molaro <lupus@ximian.com>
515
516         * threads.c: make people test with 1 MB stack per thread.
517
518 2005-01-17  Dick Porter  <dick@ximian.com>
519
520         * timefuncs.h: Make WapiFileTime endian-aware, as it's often
521         cast to and from 64bit ints.  Fixes bug 71213.
522
523 2005-01-11  Dick Porter  <dick@ximian.com>
524
525         * error.c (errno_to_WSA): Add EADDRNOTAVAIL error code
526         translation.
527
528 Mon Jan 10 16:15:19 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
529
530         * atomic.h: Fix functions on s390.
531
532 Mon Jan 10 20:30:19 CET 2005 Paolo Molaro <lupus@ximian.com>
533
534         * atomic.h: fix some functions on ppc (tests/interlocked.cs).
535
536 2005-01-10  Dick Porter  <dick@ximian.com>
537
538         * misc.c (_wapi_calc_timeout): Guard against overflow when
539         calculating timeouts.  This makes waiting with a large
540         (Int32.MaxValue) timeout not return immediately.
541
542 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
543
544         * io.c (io_ops): make this `const' so it is shareable (well, only
545         really shareable if it is statically linked...)
546
547 Mon Dec 20 11:58:33 CET 2004 Paolo Molaro <lupus@ximian.com>
548
549         * threads.c, threads.h: add accessor to get the pthread_key_t for
550         a tls id.
551
552 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
553
554         * io.c: check for the existence of 'dest' and set ERROR_ALREADY_EXISTS
555         if it exists and is not the same as 'src'.
556
557 2004-12-01 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
558
559         * atomic.h : Fix InterlockedCompareExchange for s390/s390x.
560
561 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
562
563         * processes.c: unquote the cmd path, allow for ' or " when quoting and
564         pass the quoted program name to the daemon, otherwise the call to
565         g_shell_unquote in the daemon will break things up.
566
567 2004-10-14  Dick Porter  <dick@ximian.com>
568
569         * sockets.c (_wapi_accept): Revert the previous change.  We now
570         set the accepted socket to have the same blocking status as the
571         listening socket in managed code.  This follows MS behaviour.
572         
573 2004-10-14  Dick Porter  <dick@ximian.com>
574
575         * sockets.c (_wapi_accept): On Darwin, make sure a newly
576         accept()ed socket is blocking.  Fixes bug 67355, patch by
577         grompf@sublimeintervention.com.
578
579 2004-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
580
581         * system.c: check the number of online processors instead of the
582         existing ones. Sanitize return value if it's an error.
583
584 2004-10-03 Ben Maurer  <bmaurer@ximian.com>
585
586         * system.c: Add support for getting the # of cpus.
587
588 2004-09-28  Dick Porter  <dick@ximian.com>
589
590         * io.c (pipe_close_private): Fix one small typo in the last change
591         that totally hosed process creation with redirected pipes.
592
593 2004-09-24  Dick Porter  <dick@ximian.com>
594
595         * wapi-private.h: 
596         * sockets.c: 
597         * socket-private.h: 
598         * io.c: 
599         * io-private.h: 
600         * handles-private.h: Cope when a file descriptor is reused while
601         the handle that thought it owned it is still referenced, instead
602         of asserting.  Probably fixes bug 66479, though we've been unable
603         to reproduce it.
604
605 2004-09-09  Dick Porter  <dick@ximian.com>
606
607         * error.c:
608         * io.c: Set error codes everywhere.
609
610 2004-09-06  Dick Porter  <dick@ximian.com>
611
612         * handles.c (_wapi_handle_unref): Reset the private record's type
613         (CloseHandle): Check for a fd mapping failure, and return FALSE.
614         (_wapi_handle_process_fork): Fix long-standing bug in checking
615         handle return values.  Also do the required bookkeeping with the
616         new process's handles.
617
618         * daemon.c: When creating a new process's handles, check whether
619         the shared space needs to be increased
620
621 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
622
623         * shared.c (_wapi_shm_file): Fix leaking of filename.
624
625 2004-08-19  Dick Porter  <dick@ximian.com>
626
627         * handles.c (_wapi_handle_count_signalled_handles): Fix thinko
628         introduced with the fd offset stuff: unlock handles properly when
629         backing off.  Fixes the monologue hang at exit.
630
631 2004-08-18  Dick Porter  <dick@ximian.com>
632
633         * sockets.c: 
634         * io.c: Check that new fds fit in the table, return error if not
635
636         * daemon.c (_wapi_daemon_main): 
637         * handles.c (shared_init): Have all processes agree on a size for
638         the fd table.
639
640 2004-08-17  Dick Porter  <dick@ximian.com>
641
642         * daemon.c (process_new): 
643         * handles.c (_wapi_handle_new_internal): Cope when the space
644         reserved for file descriptors is larger than the shared segment
645         size.  Fixes the crash reported when running mono under gdb on
646         macosx.
647
648 2004-08-16  Dick Porter  <dick@ximian.com>
649
650         * sockets.c:
651         * io.c:
652         * handles-private.h (_wapi_handle_fd_offset_to_handle): Improve
653         error checking with passed-in file descriptors.
654
655 2004-08-11  Dick Porter  <dick@ximian.com>
656
657         * sockets.c: 
658         * io.c: Returned handle values are the file descriptor the handle
659         encapsulates
660
661         * handles.c: 
662         * handles-private.h: 
663         * daemon.c: Reserve the range of handles that can have the same
664         values as file descriptors.  These won't be used, but the values
665         will be used as file, console, pipe or socket handles.  The fd to
666         handle mapping is done internally and is invisible to users.
667         Fixes bug 61828.
668
669         * wapi-private.h (_WAPI_HANDLE_VERSION): Increment, because we now
670         reserve a chunk of handle space.
671
672 2004-08-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
673
674         * atomic.h: add support for 64-bit S/390
675
676 2004-07-22  Dick Porter  <dick@ximian.com>
677
678         * timed-thread.c: 
679         * threads.c: Move the destruction of the internal thread data to
680         after the thread has been joined.  Fixes bug 61418.
681
682 2004-07-14  Dick Porter  <dick@ximian.com>
683
684         * wait.c (test_and_own): When not waiting for all handles to
685         become signalled, only own and return the lowest.  All the
686         documentation suggests that the old way was correct, but
687         experimentation shows it actually works like this.  Patch by
688         Sébastien Robitaille
689         (sebastien.robitaille@croesus.com), fixes bug 61511.
690
691 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
692
693         * threads.c: register roots for gc
694
695 2004-07-08  Dick Porter  <dick@ximian.com>
696
697         * io.c (file_seek): If there is a high 32bit offset part, make
698         sure the low part isn't sign-extended.  Set error codes when
699         returning failure.  Fixes bug 61131.
700
701 2004-07-06  Dick Porter  <dick@ximian.com>
702
703         * io.c (file_setfiletime): Check for underflow when converting to
704         time_t values.  Set error codes when returning failure.  Fixes bug
705         60970.
706
707 2004-07-05  Dick Porter  <dick@ximian.com>
708
709         * mutexes.c (mutex_ops_init): Make the named mutex mutex sharable.
710
711         * daemon.c (unref_handle): Only destroy a handle if all processes
712         have released it, not just the current one.  Fixes bug 60887.
713
714 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
715
716         * mono-mutex.h atomic.h: Add G_GNUC_UNUSED to static inline functions
717         to prevent warnings.
718
719 2004-06-24  Dick Porter  <dick@ximian.com>
720
721         * mutexes.c: Indicate when a named mutex was reused
722
723 2004-06-24  Dick Porter  <dick@ximian.com>
724
725         * threads.c (SuspendThread): 
726         * timed-thread.c (_wapi_timed_thread_suspend): Wrap sem_wait in a
727         while loop.  See bug 58161.
728
729 Wed Jun 23 23:29:04 CEST 2004 Paolo Molaro <lupus@ximian.com>
730
731         * io.c: don't use sharemode for on-disk file permissions: it's used
732         for shared access to the open file.
733
734 2004-06-22  Dick Porter  <dick@ximian.com>
735
736         * events.c (CreateEvent): When creating an auto-reset event that
737         is initially owned, make sure the set count starts at 1.
738
739 2004-06-18  Dick Porter  <dick@ximian.com>
740
741         * event-private.h:
742         * events.c: Auto-reset events need to release one thread for each
743         time SetEvent() is called.  Fixes bug 41292.
744
745         * threads.h:
746         * mutex-private.h:
747         * mutexes.c: Scan for mutexes that are still locked by a thread
748         when it exits.  Fixes the MS demo app linked by bug 41292.
749
750         * wait.c (test_and_own): Make sure a handle is signalled before it
751         is owned.
752
753 2004-06-16  Dick Porter  <dick@ximian.com>
754
755         * timed-thread.c: Call the thread cleanup exit routine before taking
756         the join mutex, because this could deadlock if another thread tries
757         to join in the meantime.  This fixes the hang-at-exit problem seen
758         on macos.
759
760 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
761
762         * threads.c: Implemented SleepEx.
763         * threads.h: Fixed SleepEx signature.
764
765 2004-06-03  Miguel de Icaza  <miguel@ximian.com>
766
767         * threads.c: When running under valgrind, do not allocate too much
768         stack, as Valgrind default is 1 meg.
769
770 2004-05-27  Dick Porter  <dick@ximian.com>
771
772         * io.h:
773         * io.c: Implemented LockFile() and UnlockFile()
774
775 2004-05-21  Dick Porter  <dick@ximian.com>
776
777         * io.c (CreateFile): Check for existing share modes when opening
778         a file.
779
780         * handles.c: 
781         * handles-private.h: 
782         * daemon-messages.h: 
783         * daemon.c: Maintain a hash of file share modes, keying on device
784         and inode (to cope with symlinks.)
785
786 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
787
788         * daemon-messages.c: Retry if the communication with the daemon is
789           interrupted by a signal.
790         * io.c, sockets.c: Check for EINTR in every syscall that can be interrumped. 
791           Only return an error in this case if there is something in the apc queue
792           (which means that it is an interruption requested by the "user").
793         * processes.c: Use WaitForSingleObjectEx. No need to pass "alertable" as
794           true since the wait is small.
795         * shared.c: Retry write calls when interrumped by a signal.
796         * timed-thread.h, timed-thread.c: added _wapi_thread_apc_pending, which
797           returns TRUE if there are pending asynchronous calls (APC) for the
798           provided thread. Also added _wapi_thread_dispatch_apc_queue which calls
799           the enqueued APCs. Defined a new struct ApcInfo that holds information
800           about an enqueued APC.
801         * thread-private.h, threads.c: Implemented QueueUserAPC (which does the same
802           as in win32),_wapi_thread_apc_pending and _wapi_thread_dispatch_apc_queue. 
803           These last two methods call the corresponding apc methods in 
804           thread-private using the provided thread handle.
805         * threads.h: Added QueueUserAPC.
806         * uglify.h: Added WapiApcProc (needed by QueueUserAPC).
807         * wait.c, wait.h: Changed WaitForSingleObject to WaitForSingleObjectEx, and
808           WaitForMultipleObjects to WaitForMultipleObjectsEx. Implemented support
809           for APCs in those two methods and also in SleepEx.
810
811 2004-05-17  Dick Porter  <dick@ximian.com>
812
813         * io.c (CopyFile): Speed up.  Fixes bug 57859.
814
815 2004-05-13  Dick Porter  <dick@ximian.com>
816         * mono-mutex.c (mono_mutex_unlock): Return EPERM when the current
817         thread doesn't own the mutex, rather than assert()ing.
818
819 2004-05-11  Dick Porter  <dick@ximian.com>
820
821         * shared.c (_wapi_shm_attach): Cope when a previous daemon startup
822         attempt failed, leaving shared files that look like a daemon is
823         still starting.
824
825 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
826
827         * io.c:
828         (SetFileAttributes): don't the the exec bit if the corresponding read
829         bit is not set.
830
831 2004-05-10  Zoltan Varga  <vargaz@freemail.hu>
832
833         * io.c (FindFirstFile): Fix invalid free.
834
835 2004-05-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
836
837         * io.c: translate from GFileError to errno codes and don't free
838         variables right after calling mono_io_scandir, as we may overwrite
839         errno value.
840
841 2004-05-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
842
843         * io.c: g_dir_open return ENOENT for directories on which we don't have
844         read/execute permission, while returning EPERM for anything below those.
845         So, change ENOENT by EPERM if the directory exists.
846
847 2004-05-07  Dick Porter  <dick@ximian.com>
848
849         * io.c (SetFileAttributes): Don't have failed chmod()s cause a
850         "file not found" error.  Fixes bug 54032.
851         
852 2004-05-07  Dick Porter  <dick@ximian.com>
853
854         * io.c (FindFirstFile): Comment out a windows-compatibility check
855         that breaks when directories have metachars in their names.
856         Workaround for bug 58116.
857
858 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
859
860         * io.c: fixed for FindFirstFile for empty directories. Closes
861         bug #58147.
862
863 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
864
865         * processes.c: set the start time for the current process. Fixes bug
866         #58109.
867
868 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
869
870         * io-private.h: 'namelist' is now a gchar ** in _WapiHandlePrivate_find.
871         * io.c: implemented scandir using glib functions.
872
873 2004-05-04  Dick Porter  <dick@ximian.com>
874
875         * daemon.c (read_message): Return FALSE on error so the GSource
876         callback itself can return FALSE.  Cures the infinite loop poll()
877         warning on MacosX.
878         * shared.c: Fix some daemon startup race conditions.
879
880 2004-04-29  Miguel de Icaza  <miguel@ximian.com>
881
882         * io.c (CopyFile): Use 32k buffers to copy the file instead of 2k,
883         use the stack, do not use dynamic memory.
884
885 2004-04-29  Zoltan Varga  <vargaz@freemail.hu>
886
887         * io.c: Add scandir implementation for platforms which do not have
888         it, like solaris.
889
890 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
891
892         * io.[ch]: implemented GetLogicalDriveStrings.
893
894 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
895
896         * io.c:
897         * sockets.c: use the field name from configure when accessing sigval
898         pointer field. Makes this work on the Mac.
899
900 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
901
902         * atomic.c: (InterlockedExchange) fix typo for
903         mutex name
904
905 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
906
907         * io.c:
908         * sockets.c: added check for sys/aio.h.
909
910 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
911
912         * error.[ch]: added _wapi_get_win32_file_error...
913         * io.c: ... which was _wapi_get_win32_error here.
914         * sockets.c: rename the function calls here too.
915
916 2004-04-28  Dick Porter  <dick@ximian.com>
917
918         * daemon-messages.c: Avoid a deadlock when a thread is killed while
919         waiting for the daemon by using a recursive mutex.  Helps bug 56699.
920
921 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
922
923         * io.c: fixed leak in async_notifier().
924
925         * sockets.[ch]: added AIO support for sockets and fixed WSAIoctl
926         declaration.
927
928         * threads.c: removed old comment.
929
930 2004-04-26  David Waite  <mass@akuma.org>
931
932         * daemon-messages.h:
933         * daemon-private.h
934         * error.h:
935         * io.h:
936         * processes.h:
937         * shared.h:
938         * thread-private.h:
939         * wapi-private.h: remove comma from end of enumeration declarations
940         * status.h: cast unsigned int types to int for enum assignment
941
942 2004-04-26 David Waite <mass@akuma.org>
943
944         * io.c:
945         * timefuncs.c: declare 64-bit constants as long long types (i.e.
946         10ULL)
947
948 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
949
950         * socket-wrappers.h: _wapi_socket == WSASocket now. Added
951         WSA_FLAG_OVERLAPPED.
952
953         * sockets.c: new unused parameters for _wapi_socket.
954
955 2004-04-22  Miguel de Icaza  <miguel@ximian.com>
956
957         * timed-thread.c: Replace sem_init with MONO_SEM_INIT to handle
958         the fact that MacOS X is a piece of junk (sem_init is *defined* in
959         the libc, but they return `not implemented'). 
960
961 2004-04-22  Dick Porter  <dick@ximian.com>
962
963         * handles.c: 
964         * handles-private.h: Reference the handle when it is locked, so
965         that another thread can't blow it away while we're waiting for it
966         to become signalled.
967         
968         * wait.c: 
969         * timed-thread.c: 
970         * threads.c: 
971         * sockets.c: 
972         * semaphores.c: 
973         * mutexes.c: 
974         * mono-mutex.c: 
975         * io.c: 
976         * handles.c: 
977         * handles-private.h: 
978         * events.c: 
979         * error.c: 
980         * daemon-messages.c: 
981         * critical-sections.c: 
982         * atomic.c: Added pthreads cleanup handlers and error asserts
983
984         * shared.c: 
985         * handles.c: Fixed the gcc "variable might be used uninitialised"
986         warnings.  They can't happen, but gcc doesn't know that
987         g_assert()s don't return.
988
989         Fixed the declaration of _wapi_handle_process_kill() so that it
990         expects the correct type for the pid.
991         
992         * threads.c: Removed the TLS_PTHREAD_MUTEX style locking that
993         hasn't been used in ages and just made the code more complex.
994
995 2004-04-17  Zoltan Varga  <vargaz@freemail.hu>
996
997         * processes.c: Include <signal.h> for SIGKILL and SIGILL + fix some
998         warnings. Fixes #57168.
999
1000 2004-04-16  Dick Porter  <dick@ximian.com>
1001
1002         * threads.c (Sleep): Using div(3) with a negative (when signed)
1003         numerator causes the quotient to be 0 and the remainder to be the
1004         numerator.  This feeds a small negative value to nanosleep(3),
1005         which will return immediately and cause a busy wait.  Fixes bug
1006         56351.
1007
1008 2004-04-15  Dick Porter  <dick@ximian.com>
1009
1010         * io-private.h:
1011         * io.c: Rewrite FindFirstFile and FindNextFile using scandir(3)
1012         and fnmatch(3) instead of glob(3).  glob() can't cope with being
1013         given filenames containing metachars.  This fixes bug 40557.
1014
1015 2004-04-14  Bernie Solomon  <bernard@ugsolutions.com>
1016
1017         * security.c: #warning is a GCC-ism
1018
1019 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
1020
1021         * security.c: Removed GetUserName as glib g_get_user_name does a
1022         better (portability) job. Added ImpersonateLoggedOnUser and
1023         RevertToSelf.
1024
1025 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1026
1027         * mono-mutex.h: move pthread_mutex_timedlock declaration to...
1028         * mono-mutex.c: ...here. It was causing a warning that prevented
1029         libgdiplus compilation.
1030
1031 2004-04-04  Miguel de Icaza  <miguel@ximian.com>
1032
1033         * security.c (GetUserName): Make it work on MacOS X
1034
1035 2004-04-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1036
1037         * security.c: use getpwuid_r if available. This one is thread-safe.
1038
1039 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
1040
1041         * Makefile.am: Added security.c|h.
1042         * security.c: New file for security related functions. Added function
1043         GetUserName to fix #56144.
1044         * security.h: New. Header file for security.c
1045         * wapi.h: Added include for security.h
1046
1047 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1048
1049         * daemon-messages.h: added kill structs.
1050
1051         * daemon.c: implemented process_process_kill.
1052         * handles-private.h:  define process_process_kill.
1053         * handles.c: implemented _wapi_handle_process_kill.
1054         * processes.[ch]: implemented TerminateProcess.
1055
1056 2004-03-25  Bernie Solomon  <bernard@ugsolutions.com>
1057
1058         * daemon.c (rem_fd): On solaris you seem to get an
1059         error even after removing the input source so don't
1060         try and rem_fd it twice.
1061
1062 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
1063
1064         * daemon.c: in process_post_mortem, If the child terminated due to the 
1065         receipt of a signal, the exit status must be based on WTERMSIG, since 
1066         WEXITSTATUS returns 0 in this case.
1067
1068 2004-03-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1069
1070         * daemon.c: turned a warning into a DEBUG statement. Now we may hit it.
1071
1072 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1073
1074         * daemon.c: only call getdtablesize () once.
1075         * processes.c: wait 500 ms to check if execve failed and throw the same
1076         exception as MS on failure. Fixes bug #32809.
1077
1078 2004-03-17  Bernie Solomon  <bernard@ugsolutions.com>
1079
1080         * io.c (async_notifier): use "union sigval" rather
1081         than sigval_t as Solaris doesn't have sigval_t
1082         (which isn't in IEEE 1003.1 either).
1083
1084 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1085
1086         * io.c: added debug stuff and removed a few redundant lines in
1087         file_write.
1088
1089 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1090
1091         * io-private.h: added new fields for file structure. Declare
1092         _wapi_io_add_callback.
1093
1094         * io.c: added _wapi_get_win32_error, support aio_read/write in
1095         file_read/write. Implemented _wapi_io_add_callback, which is where
1096         BindHandle ends up.
1097         
1098         * io.h: added new fields for WapiOverlapped and typedef for the
1099         callback.
1100
1101         * processes.c: fixed off-by-one bug when handling environment variables 
1102         passed in.
1103
1104         * threads.[ch]: implemented BindIoCompletionCallback.
1105
1106         * uglify.h: added typedef for LPOVERLAPPED_COMPLETION_ROUTINE.
1107
1108 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
1109
1110         * socket-wrappers.h: Remove extra semicolon.
1111
1112 2004-03-03  Dave Camp  <dave@ximian.com>
1113
1114         * daemon.c: (add_fd), (fd_activity), (_wapi_daemon_main):
1115         Use a new main context.
1116
1117 2004-03-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1118
1119         * io.c:
1120         (GetFileAttributes): set the error depending on errno instead of
1121         setting ERROR_FILE_NOT_FOUND always. See bug #55160.
1122
1123 2004-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1124
1125         * io.c:
1126         (CopyFile): free the buffer on error.
1127         * sockets.c:
1128         (WSAIoctl): free the buffer on error.
1129
1130 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1131
1132         * error.c: fixed mapping for EPROTONOSUPPORT and ESOCKTNOSUPPORT.
1133
1134         * sockets.[ch]: retry creating the socket for AF_INET, SOCK_RAW
1135         using IP protocol with IP over IP. Implemented WSAIoctl UNIX-style.
1136
1137 2004-01-27  Bernie Solomon  <bernard@ugsolutions.com>
1138
1139         * shared.c (_wapi_shm_file): add hostname
1140         to shared data file names to handle NFS mounted
1141         .wapi directories.
1142
1143 Mon Jan 26 16:15:03 CET 2004 Paolo Molaro <lupus@ximian.com>
1144
1145         * sockets.h: remove obsolete soklen_t typedef.
1146
1147 Fri Jan 23 21:07:02 CET 2004 Paolo Molaro <lupus@ximian.com>
1148
1149         * socket-wrappers.h, sockets.h, sockets.c, Makefile.am: move socket
1150         wrappers to its own non-installed header file.
1151
1152 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1153
1154         * io.c:
1155         (FindFirstFile): unlock the handle if FindNextFile fails.
1156         (FindNextFile): g_free a couple of pointers before retrying.
1157
1158         * wait.c:
1159         (WaitForMultipleObjects): if only one handle provided, use
1160         WaitForSingleObject.
1161
1162 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
1163
1164         * handles-private.h: (_wapi_handle_type) check
1165         for segment in range before using it
1166
1167 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
1168
1169         * thread-private.h: _wapi_thread_ops is now const
1170         must match .c file.
1171
1172 Mon Dec 22 18:29:03 CET 2003 Paolo Molaro <lupus@ximian.com>
1173
1174         * threads.c, timed-thread.c, timed-thread.h: use mach
1175         semaphores on Darwin (MacOSX) since the posix ones
1176         are mostly broken there (threads are not created suspended
1177         and they can start executing before they are fully initialized
1178         like in tests/thread-static.cs).
1179
1180 Mon Dec 22 17:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
1181
1182         * atomic.h: ppc fixes.
1183
1184 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
1185
1186         * handles.c: remove my bad use of MONO_ZERO_ARRAY_LENGTH
1187         in HDRSIZE 
1188
1189 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
1190
1191         * shared.c: (_wapi_shm_open) make scratch file
1192         not have to immediately regrow to avoid remaps
1193         (HPUX can't cope with these).
1194         (_wapi_shm_attach) use actual size of file
1195         to set scratch data_len for the creating process.
1196
1197         * handles.c: (_wapi_handle_new_internal) make
1198         sure mutex & cond var are initialized even for
1199         non process shared ones. 
1200         (_wapi_handle_unref) always call destroy 
1201         routines on mutex & cond var
1202
1203 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
1204
1205         * daemon.c: change channel data structure so
1206         input sources are removed from glib event loop
1207         properly. xsp works better on Solaris and 
1208         fixes #51278
1209
1210 2003-12-12  Bernie Solomon  <bernard@ugsolutions.com>
1211
1212         * wapi-private.h: Replace G_GNUC_PRETTY_FUNCTION
1213         definition with file & line number for non-GCC
1214         compiles.
1215
1216 2003-12-08  Bernie Solomon  <bernard@ugsolutions.com>
1217
1218         * Makefile.am: make sure hppa_atomic.s is in distribution
1219
1220 2003-12-01  Dick Porter  <dick@ximian.com>
1221
1222         * wapi-private.h: 
1223         * mutexes.c (CreateMutex): 
1224         * mutex-private.h (struct _WapiHandle_mutex): 
1225         * handles.c: Look up certain handle types by name, in a shared
1226         namespace.  Currently only mutex handles have this implemented.
1227         Fixes bug 51089.
1228
1229         * semaphores.c (CreateSemaphore): 
1230         * events.c (CreateEvent): Fix signature
1231
1232 2003-11-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1233
1234         * io.c: don't call g_free before testing errno as it may modify it.
1235         If the path exists, return an error if it's not a directory. Fixes
1236         bug #50753.
1237
1238 2003-11-20  Dick Porter  <dick@ximian.com>
1239
1240         * io.c: Missed a little-endian UTF16 conversion.  Patch from
1241         Jeroen Zwartepoorte (Jeroen@xs4all.nl), fixes bug 51065.
1242
1243 2003-10-29  Dick Porter  <dick@ximian.com>
1244
1245         * io.c (MoveFile): If the move crosses filesystems, try and fall
1246         back to copy and delete.  Patch from Jörg Rosenkranz
1247         (JoergR@voelcker.com), fixes bug 50298.
1248
1249 2003-10-28  Dick Porter  <dick@ximian.com>
1250
1251         * io.c: Use the new encoding conversion to cope with non-utf8
1252         locales in filenames.
1253
1254         * processes.c: Ditto for process arguments.
1255
1256 Tue Oct 21 12:01:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
1257
1258         * atomic.h: some ppc inline asm fixes (incorrect use of labels, 
1259         incorrect register constraints, incorrect clobber lists).
1260
1261 2003-10-13  Bernie Solomon  <bernard@ugsolutions.com>
1262
1263         * Makefile.am hppa_atomic.s: add HP 64bit
1264         implementation of atomic ops
1265
1266 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
1267
1268         * threads.c (CreateThread): Wrap pthread_attr_setstacksize call in
1269         a conditional for platforms that don't have it.
1270
1271 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
1272
1273         * threads.c: (CreateThread) use stacksize argument
1274         if non-zero - change default for 64 bits to 4Mb
1275
1276 2003-09-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1277
1278         * sockets.c: set last error when socket creation fails. This shed some
1279         light on bug #49015.
1280
1281 2003-09-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1282
1283         * processes.c: fixed bug #48973: we only change \ by / for the argument
1284         to be used as command.
1285         When getting the program name from the args, don't let the space between
1286         them in the args.
1287
1288 2003-09-24  Bernie Solomon <bernard@ugsolutions.com>
1289
1290         * atomic.h atomic.c: fix sparc so lock is
1291         global, increment does so and it compiles under Sun compiler.
1292
1293 2003-09-22  Bernie Solomon <bernard@ugsolutions.com>
1294
1295         * handles.c: include <string.h> directly as may
1296         not be nested in <sys/un.h> like Linux
1297
1298 2003-09-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1299
1300         * io.c:
1301         (DeleteFile): call SetLastError on failure. Fix by
1302         richard.torkar@htu.se (Richard Torkar). Closes bug #48222.
1303
1304 2003-09-15  Lluis Sanchez Gual  <lluis@ximian.com>
1305
1306         * daemon.c: In compare_process(), discard handles already signalled.
1307
1308 2003-09-02  Dick Porter  <dick@ximian.com>
1309
1310         * io.c: Work around glib brain-dead assumptions about utf8-encoded
1311         filenames.  Fixes bug 30781.
1312
1313 2003-08-28  Dick Porter  <dick@ximian.com>
1314
1315         * critical-sections.c:  Patch from Bernie Solomon
1316         <bernard@ugsolutions.com> to emit a warning if locking a critical
1317         section fails.
1318
1319 2003-07-23  Dick Porter  <dick@ximian.com>
1320
1321         * shared.c:
1322         * daemon.c (maybe_exit): Avoid the race condition when the daemon is
1323         closing but another client comes along when the shared data is still
1324         visible.  Should fix bugs 33671 and 35213.
1325
1326 2003-07-23  Dick Porter  <dick@ximian.com>
1327
1328         * handles.c:  Initialise handle mutex and cond.  Fix by
1329         Bernie Solomon <bernard@ugsolutions.com>
1330
1331 2003-07-15  Dick Porter  <dick@ximian.com>
1332
1333         * timed-thread.c (timed_thread_start_routine): Fix virtual memory
1334         leak when threads quit.  Fixes bug 44067.
1335
1336 Wed Jun 18 19:08:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
1337
1338         * io.c: never add write permission for group or others in
1339         SetFileAttributes ().
1340
1341 2003-06-17  Dick Porter  <dick@ximian.com>
1342
1343         * io.c (SetFileAttributes): Implement the ReadOnly attribute, and
1344         ignore the unsupported ones ("fixes" bug 44977).
1345
1346 2003-06-17  Lluis Sanchez Gual  <lluis@ximian.com>
1347
1348         * misc.c: fix bug in _wapi_calc_timeout. It gave wrong values for
1349           high ms values (there was an overflow).
1350
1351 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
1352
1353         * system.h (struct _WapiSystemInfo ): Fix warnings when using gcc-3.3.
1354
1355 2003-06-11  Dick Porter  <dick@ximian.com>
1356
1357         * shared.c: Fix shared directory creation.  Patch from
1358         Pablo Baena <pbaena@uol.com.ar>
1359
1360 2003-06-10  Dick Porter  <dick@ximian.com>
1361
1362         * atomic.c: Delete the useless compile warning
1363
1364 2003-06-09  Dick Porter  <dick@ximian.com>
1365
1366         * daemon.c: Lookup env as a string array.  Fixes bug 44289.  Also
1367         make setting the process handle value in the environment actually
1368         work.
1369
1370         * processes.c: Pretty up the process name, if it happens to be
1371         "mono" such as when another mono process forks "mono foo.exe"
1372
1373 2003-06-05  Dick Porter  <dick@ximian.com>
1374
1375         * processes.c (process_set_current): Don't do an expensive handle
1376         search at application startup, check the environment to see if the
1377         process handle has already been created.
1378
1379         * io.c: Don't do an expensive handle search when creating stdin,
1380         stdout and stderr handles, just create them all the first time one
1381         is requested.
1382
1383         * wapi-private.h:
1384         * shared.c:
1385         * shared.h:
1386         * handles.c:
1387         * handles-private.h:
1388         * daemon-messages.h:
1389         * daemon-private.h:
1390         * daemon.c: Support for "unlimited" number of handles and scratch
1391         data.
1392
1393         Speed up application startup by passing process handle in the
1394         environment, rather than let the app scan all handles (which gets
1395         really slow when there are more than a few thousand to check.)
1396
1397         Initialise some structs passed to syscalls, noticed by valgrind.
1398         
1399
1400 2003-05-20  Dick Porter  <dick@ximian.com>
1401
1402         * io.c (FindFirstFile): Include . files in the glob.  Fixes bug
1403         43229.
1404
1405 2003-05-19  Dick Porter  <dick@ximian.com>
1406
1407         * threads.c: Set the new thread's stack size to 2M.  Fix needed
1408         for BSD, reported by Martin Dvorak <md@9ll.cz>
1409
1410 2003-05-16  Dick Porter  <dick@ximian.com>
1411
1412         * io.h:
1413         * io.c: Implement GetTempPath()
1414
1415 2003-05-16  Dick Porter  <dick@ximian.com>
1416
1417         * processes.c (CreateProcess): Set some error codes
1418
1419 2003-05-12  Dick Porter  <dick@ximian.com>
1420
1421         * misc.c (_wapi_calc_timeout): Cope with overflowing tv_nsec.
1422         Patch from Martin Dvorak <mdvorak@ninell.cz>.
1423
1424 2003-05-10  Dick Porter  <dick@ximian.com>
1425
1426         * io.c (CopyFile): Copy file mode as well as file data.  Based on
1427         suggestion by Giuseppe Greco <giuseppe.greco@agamura.com>, bug
1428         42706.
1429
1430 2003-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1431
1432         * handles.c: don't call GC_gcollect when creating new handles.
1433
1434 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1435
1436         * handles.c: added some debugging code. Call GC_gcollect
1437         before creating a new handle. It makes Lupus' test run smoother and
1438         faster (from 62 to 83 request per second). Notice that calling
1439         GC_finalizer_notifier if needed (GC_should_invoke_finalizer ()) does
1440         not improve nor degrade the performance, so i don't do it.
1441
1442 2003-05-02  Dick Porter  <dick@ximian.com>
1443
1444         * sockets.c: Rearrange closesocket() and socket_close_private(),
1445         and remember to unref the handle, so we don't leak socket handles.
1446         Fix from Pelle Johnsen <pelle.johnsen@mail.dk>
1447
1448 2003-04-11  Dick Porter  <dick@ximian.com>
1449
1450         * atomic.h: ARM atomic operations by Malte Hildingson
1451         <tds00mahi@tellus.thn.htu.se>
1452
1453 Tue Apr 8 11:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
1454
1455         * atomic.h: fix macosx build by "Urs C. Muff" <umuff@quark.com>.
1456
1457 2003-04-03  Martin Baulig  <martin@ximian.com>
1458
1459         The following change is conditional to `WITH_INCLUDED_LIBGC'
1460         which is not yet enabled by default.
1461
1462         * threads.c (SuspendThread, ResumeThread): Fully implemented this.
1463         (gc_init): New static function; install a signal handler for
1464         SIGPWR which is used to suspend threads.  [FIXME: it SIGPWR
1465         doesn't exist on all Unix systems, we need to find another
1466         signal].
1467         (mono_wapi_push_thread_stack): New public function.  Tells the
1468         garbage collector about the current stack pointer of a suspended
1469         thread.
1470
1471 2003-04-03  Martin Baulig  <martin@ximian.com>
1472
1473         * timed-thread.h (TimedThread): Added `suspended_sem',
1474         `suspend_count' and `stack_ptr'.
1475
1476 2003-03-28  Dick Porter  <dick@ximian.com>
1477
1478         * atomic.h: PPC support gratiously donated to the public domain
1479         by John Duncan <jddst19@mac.com>
1480
1481 2003-03-20  Dick Porter  <dick@ximian.com>
1482
1483         * sockets.c (_wapi_connect): If connect() fails with EACCES, try
1484         setting SO_BROADCAST and connecting again.  Fixes bug 39178.
1485
1486 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1487
1488         * processes.c: included Jerome Laban's patch and call SetLastError when
1489         the executable is not found.
1490
1491 2003-03-03  Dick Porter  <dick@ximian.com>
1492
1493         * io.c (CreateFile): Try opening directories readonly, so that
1494         timestamps can be adjusted.  Patch by Elan Feingold
1495         <efeingold@mn.rr.com>.
1496
1497 2003-02-25  Dick Porter  <dick@ximian.com>
1498
1499         * shared.c (_wapi_shm_attach): Return a failure code on system
1500         call errors, rather than exiting.
1501
1502 2003-02-21  Dick Porter  <dick@ximian.com>
1503
1504         * processes.c (GetCurrentProcessId): Use the current process
1505         handle to return the process ID, as getpid() is unreliable
1506         (linuxthreads gives each thread a different pid).  Fixes bug
1507         37550.
1508
1509 2003-02-21  Dick Porter  <dick@ximian.com>
1510
1511         * io.c (FindNextFile): Skip over dangling symlinks.  Fixes bug
1512         34076.
1513
1514 2003-02-11  Dick Porter  <dick@ximian.com>
1515
1516         * timefuncs.h: 
1517         * timefuncs.c: Added GetTickCount()
1518
1519 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1520
1521         * error.c: added WSA_EHOSTUNREACH mapping.
1522
1523 2003-01-26  Miguel de Icaza  <miguel@ximian.com>
1524
1525         * io.c (SetFileAttributes): This routine is not currently
1526         implemented for the general case, but I added a special case to
1527         set the executable bit on Linux.
1528
1529 Wed Jan 15 15:55:40 CET 2003 Paolo Molaro <lupus@ximian.com>
1530
1531         * sockets.h, daemon.c, io.c: compilation fixes on MacOSX.
1532
1533 2003-01-08  Dick Porter  <dick@ximian.com>
1534
1535         * sockets.c: Fixed setting blocking mode to true (fixes bug 36388)
1536
1537 2002-12-11  Juli Mallett  <jmallett@FreeBSD.org>
1538
1539         * daemon.c, handles-private.h, handles.c, wapi-private.h:
1540         Check for an implementation which says it supports
1541         _POSIX_THREAD_PROCESS_SHARED, rather than just one that
1542         defines the symbol.  Defined but with a value of -1 still
1543         means that it is unsupported.
1544
1545 2002-12-08  Martin Baulig  <martin@ximian.com>
1546
1547         * handles.c (_wapi_handle_new): Create new non-shared handles with
1548         an initial refcount of 1, not 0.
1549
1550 2002-11-22  Dietmar Maurer  <dietmar@ximian.com>
1551
1552         * threads.c (TlsGetValue): removed unnecessary mutex
1553
1554 2002-11-20  Dick Porter  <dick@ximian.com>
1555
1556         * timed-thread.c (_wapi_timed_thread_attach): Attached threads
1557         need to store their data structure too.
1558
1559         * threads.c: Make sure the threading data is initialised wherever
1560         it is needed
1561
1562 2002-11-15  Dick Porter  <dick@ximian.com>
1563
1564         * timed-thread.c: Removed unneeded parameters in
1565         _wapi_timed_thread_attach().
1566
1567         * threads.c: Renamed AttachThread() to make it not look like
1568         external API.  Removed unneeded parameters.
1569
1570 2002-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1571
1572         * error.[ch]: added errno_to_WSA (). It displays a warning and return
1573         WSASYSCALLFAILURE if there is no error mapping for the given errno,
1574
1575         * sockets.c: use errno_to_WSA and fixed display of warning for h_errno.
1576
1577 2002-10-31  Dick Porter  <dick@ximian.com>
1578
1579         * io.h: 
1580         * io.c: Define and use INVALID_FILE_ATTRIBUTES
1581
1582 2002-10-07  Dick Porter  <dick@ximian.com>
1583
1584         * timefuncs.c:
1585         * daemon.c: Use a more accurate time source for process start and
1586         end times.
1587
1588 2002-10-03  Dick Porter  <dick@ximian.com>
1589
1590         * daemon.c:
1591         * handles.c:
1592         * threads.c:  Fixes for freebsd.  Make sure that mutex and condition
1593         creation and deletion happen in the process that owns them, when
1594         POSIX shared thread objects aren't supported.  This breaks on
1595         freebsd, as pthread_t is a pointer to data.
1596
1597 2002-10-02  Dick Porter  <dick@ximian.com>
1598
1599         * shared.c: Use mmap() instead of sysv shm for the shared data.
1600
1601         * wapi-private.h (_WAPI_HANDLE_VERSION): Reset back to 0, for the
1602         new system
1603
1604         * daemon-private.h: 
1605         * daemon.c: mmap()ed regions survive fork, so just pass the
1606         pointer to _wapi_daemon_main instead of mapping it again.
1607
1608 2002-10-01  Dick Porter  <dick@ximian.com>
1609
1610         * timed-thread.c: Kludge for CREATE_SUSPENDED thread creation.
1611         Unfortunately libgc uses the same thread suspend technique that I
1612         want to, and the two don't mix: libgc will deadlock when it tries
1613         to stop the world if a thread has already been suspended by
1614         someone else.  Just do the simple suspended create rather than the
1615         general purpose thread suspension for now.
1616
1617         * threads.c: Pass create flags to the timed_thread create call, to
1618         implement suspended thread creation.  ResumeThread() partially
1619         implemented, to cope with the case where a newly created but
1620         suspended thread is launched.
1621
1622 2002-09-30  Dick Porter  <dick@ximian.com>
1623
1624         * sockets.c (ioctlsocket): Set non-blocking mode in a better way,
1625         with fcntl.
1626
1627 2002-09-27  Dick Porter  <dick@ximian.com>
1628
1629         * semaphores.c: Only include semaphore.h if it's present. Patch
1630         for BSD from jmmv@hispabsd.org (Julio Merino).
1631
1632 2002-09-27  Dick Porter  <dick@ximian.com>
1633
1634         * processes.c: Pass environment and working directory to the
1635         daemon when forking.  Don't let argv[0] be duplicated when looking
1636         for the program name.  Implement EnumProcessModules (simple
1637         version for now, lsof-style later if needed), GetModuleBaseName,
1638         {Get,Set}ProcessWorkingSetSize (just faked, because the vm hints
1639         aren't available on Linux).
1640
1641         * process-private.h: Store the process name, and the working set
1642         min and max
1643
1644         * handles.c:
1645         * handles-private.h: New functions to store and retrieve an array
1646         of strings in the scratch space
1647
1648         * daemon.c: Don't miss deleting some handles when a client exits
1649         (we used to rely on the client doing the final cleanup, but
1650         obviously if the client is no longer there the daemon has to do
1651         it).
1652
1653         Process forking now sets the environment and the working
1654         directory.
1655
1656         * io.c: Don't confuse fd 0 with an unassigned handle struct
1657
1658         * atomic.h: Add a google cache alternative to the msdn URL
1659
1660 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1661
1662         * sockets.c:
1663         (_wapi_recvfrom): added ECONNRESET to the switch.
1664
1665 2002-09-24  Mark Crichton  <crichton@gimp.org>
1666
1667         * atomic.h: Yea.  On linux, sparc isn't sparc, it's __sparc__.
1668         Added to ifdef.
1669
1670 2002-09-19  Mark Crichton  <crichton@gimp.org>
1671
1672         * daemon.c, shared.c: Added NEED_LINK_UNLINK for systems that
1673         dont have Linux's abstract filesystem for sockets.
1674
1675 2002-09-19  Mark Crichton  <crichton@gimp.org>
1676
1677         * atomic.h: Added SPARC atomic asm code.
1678         * daemon.c, handles-private.h, handles.c, wapi-private.h:
1679         undefined _POSIX_THREAD_PROCESS_SHARED.  This actually exists on
1680         Solaris 9, however, the code paths don't seem to work.  More testing
1681         on the shared case is *really* needed.
1682
1683 2002-09-03  Dick Porter  <dick@ximian.com>
1684
1685         * threads.h: 
1686         * threads.c: Removed PosixKillThread(), because it's not in the
1687         w32 api
1688
1689 2002-08-20  Dick Porter  <dick@ximian.com>
1690
1691         * handles.c (_wapi_handle_scratch_store): Made stored byte lengths
1692         multiples of 4 bytes, to keep header structures aligned.  Needed
1693         for sparc, at least. (Patch from crichton@gimp.org)
1694
1695         * handles.c: Removed 'disable_shm' variable (we've defaulted to
1696         building with shm enabled for months now)
1697
1698 2002-08-19  Dick Porter  <dick@ximian.com>
1699
1700         * daemon.c: Rewrote the poll() loop to use GIOChannels instead,
1701         for legacy NeXT-based systems.
1702
1703 2002-08-12  Dick Porter  <dick@ximian.com>
1704
1705         * atomic.h: Rename some parameters to avoid c++ keywords (Patch
1706         from Joseph Wenninger <kde@jowenn.at>)
1707
1708 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
1709
1710         * threads.c: use fast spinlocks by default
1711
1712 2002-08-02  Dick Porter  <dick@ximian.com>
1713
1714         * io.c (GetStdHandle): Add a handle reference when returning a
1715         duplicate console handle.  This fixes the unref_handle errors in
1716         NUnit.
1717
1718 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
1719
1720         * threads.c (TLS_PTHREAD_MUTEX): define this because else some
1721         tests does not work
1722
1723 2002-08-01  Dick Porter  <dick@ximian.com>
1724
1725         * threads.c: Use atomic spinlocks in TLS functions
1726
1727         * mono-spinlock.h:
1728         * Makefile.am: Added mono-spinlock.h
1729
1730 2002-07-21  Jeffrey Stedfast  <fejj@ximian.com>
1731
1732         * daemon-messages.c: #include <sys/types.h> and <sys/sockets.h> -
1733         these are needed for sendmsg() and also for struct msghdr (at
1734         least on Solaris). Solaris still won't build because struct msghdr
1735         doesn't have msg_flags, msg_control, or msg_controllen members.
1736         (CMSG_SPACE): Define for systems that don't have it.
1737         (CMSG_LEN): Same.
1738
1739 2002-07-20  Dick Porter  <dick@ximian.com>
1740
1741         * wapi-private.h:
1742         * io-private.h:
1743         * io.h:
1744         * io.c:
1745         * handles.c: Implemented pipe handles
1746         
1747         * handles.c:
1748         * daemon.c: Fixed bug in handle closing.
1749
1750         * shared.c:
1751         * daemon.c: Forked processes now close all open file descriptors.
1752
1753 Fri Jul 19 19:05:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
1754
1755         * sockets.h, io-layer.h, critical-sections.h: don't include config.h
1756         in header files.
1757
1758 2002-07-19  Martin Baulig  <martin@gnome.org>
1759
1760         * threads.c (ExitThread): Call exit() if no threads has been
1761         created yet.
1762
1763 2002-07-17  Dick Porter  <dick@ximian.com>
1764
1765         * daemon-messages.c: Freebsd fixes from Andreas Kohn
1766         <andreas.kohn@gmx.net>
1767
1768 2002-07-15  Dick Porter  <dick@ximian.com>
1769
1770         * io.c: Removed bogus console_flush() method, that was just cut
1771         and pasted from file_flush when I separated the two handle types.
1772
1773 2002-07-12  Dick Porter  <dick@ximian.com>
1774
1775         * io.c (convert_from_flags): Fixed misunderstanding wrt fcntl
1776         flags.  Fixes bug 27633.
1777
1778 2002-07-12  Dick Porter  <dick@ximian.com>
1779
1780         * wapi-private.h:
1781         * handles.c:
1782         * daemon.c: Use size of sockaddr_un.sun_path from config.h
1783
1784 2002-07-12  Dick Porter  <dick@ximian.com>
1785
1786         * processes.c (CreateProcess): Send stdin, stdout and stderr
1787         handles if the startup info doesnt specify new ones
1788
1789         * io.c (GetStdHandle): Return the same handle when the same
1790         standard handle is requested
1791
1792         * handles.c: Pass file descriptors when forking
1793
1794         * daemon.c: Use supplied file descriptors when forking a new
1795         process
1796
1797         * daemon-messages.h: 
1798         * daemon-messages.c: Pass stdin, stdout and stderr file
1799         descriptors to the daemon (used when forking)
1800
1801 2002-07-11  Miguel de Icaza  <miguel@ximian.com>
1802
1803         * daemon.c (_wapi_daemon_main): Use sizeof
1804         (main_socket_address.sun_path) instead of hardcoded 108 value.
1805
1806         * handles.c (shared_init): Use sizeof
1807         (shared_socket_address.sun_path) instead of hardcoded 108 value.
1808
1809 2002-07-10  Dennis Haney  <davh@davh.dk>
1810
1811         * shared.c:
1812         * handles.c:
1813         * daemon.c: Lots of documentation, some added error checking, and
1814         code readability improvements.
1815
1816         * daemon-messages.h: Add the Error request type to improve error
1817         checking.
1818
1819         * daemon-messages.c: Do a bit more error checking on send() and
1820         recv(), and log errors with a higher severity level.
1821
1822 2002-07-04  Dick Porter  <dick@ximian.com>
1823
1824         * daemon.c (process_process_fork): Fix argument handling, due to
1825         buggy understanding of g_strsplit() behaviour.
1826
1827 2002-07-03  Dick Porter  <dick@ximian.com>
1828
1829         * threads.h:
1830         * threads.c: Implement OpenThread().  Define access-control values
1831         for thread handles.
1832
1833         * wapi.h:
1834         * processes.h:
1835         * access.h:
1836         * Makefile.am: Added access.h, to hold shared access-control
1837         definitions
1838
1839 2002-07-02  Dick Porter  <dick@ximian.com>
1840
1841         * wapi-private.h (_WAPI_HANDLE_VERSION): New protocol version
1842         
1843 2002-07-02  Dick Porter  <dick@ximian.com>
1844
1845         * handles.c (shared_init): Make a second attempt to contact the
1846         daemon if the shared memory attach succeeds, but the connect()
1847         fails. (This copes with the daemon crashing without cleaning up
1848         the shared memory.)
1849
1850         * Makefile.am: 
1851         * daemon-private.h:
1852         * daemon.c:
1853         * shared.c (_wapi_shm_attach): Don't exec() anything when we fork
1854         the daemon, it's now built into the library.
1855
1856 2002-06-25  Dick Porter  <dick@ximian.com>
1857
1858         * handles.c:
1859         * handles-private.h:
1860         * daemon-messages.h:
1861         * daemon.c: Process forking and handle data management
1862
1863         * processes.h:
1864         * process-private.h:
1865         * processes.c: Process forking and other support functions
1866
1867 2002-06-25  Dick Porter  <dick@ximian.com>
1868
1869         * versioninfo.h: PE resource decoding
1870
1871         * unicode.c (_wapi_unicode_to_utf8): g_utf16_to_utf8 doesnt need
1872         to be told the string length
1873
1874         * io.c: Removed the ACTUALLY_DO_UNICODE option.  Fixed some leaks.
1875         Moved _wapi_time_t_to_filetime and the WapiFileTime typedef to
1876         timefuncs.c
1877
1878 2002-06-12  Dick Porter  <dick@ximian.com>
1879
1880         * daemon.c: 
1881         * daemon-messages.c: Handle SIGPIPE in a non-stupid way in the
1882         daemon, if MSG_NOSIGNAL isn't available.  Thanks to Jaroslaw
1883         Kowalski <jarek@atm.com.pl> for pointing out the bogosity.
1884
1885 2002-06-10  Jaroslaw Kowalski <jarek@atm.com.pl>
1886
1887         * sockets.c, daemon-messages.c: Prevent SIGPIPE from being raised
1888         when writing to a closed socket.
1889
1890 2002-06-08  Jeffrey Stedfast  <fejj@ximian.com>
1891
1892         * mono-mutex.c (mono_once): New convenience function for my
1893         previous fix.
1894
1895         * handles.c:
1896         * error.c: 
1897         * critical-sections.c: 
1898         * threads.c: 
1899         * sockets.c: 
1900         * semaphores.c: 
1901         * processes.c: 
1902         * mutexes.c: 
1903         * io.c: 
1904         * events.c: 
1905         * atomic.c: Use mono_once() rather than pthread_once().
1906
1907 2002-06-06  Jeffrey Stedfast  <fejj@ximian.com>
1908
1909         * handles.c (_wapi_handle_new): pthread_once() is not atomic, so
1910         if multiple threads all try to call _wapi_handle_new() before the
1911         shared data has been initialized, it is possible that we could get
1912         into a condition where shared_init() is being executed and later
1913         threads will pass by pthread_once() due to the fact that it has
1914         already been called and so therefor will attempt to use the shared
1915         data before it has been completely initialized. If we instead use
1916         a standard mutex locking mechanism around shared_init(), we can
1917         avoid the situation entirely. By wrapping the mutex locking in a
1918         check to see if we've already initialized the data, we can even
1919         avoid wasting resources by having to lock/unlock the mutex in any
1920         later calls (the only time we'd have to worry about
1921         locking/unlocking is the initial race to call shared_init() at
1922         startup).
1923
1924 Sat Jun 1 13:27:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
1925
1926         * atomic.h: inline asm fixes from Dennis Haney (davh@davh.dk).
1927
1928 Fri May 31 16:21:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
1929
1930         * daemon.c, handles.c: rename "sun" local var since it's apparently
1931         a #define on Solaris.
1932
1933 Fri May 31 15:40:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
1934
1935         * daemon-messages.c: work-around MSG_NOSIGNAL missing on some
1936         platforms.
1937
1938 2002-05-15  Dick Porter  <dick@ximian.com>
1939
1940         * wait.c: Fix a deadlock in WaitForMultipleObjects
1941
1942 2002-05-14  Dick Porter  <dick@ximian.com>
1943
1944         * io.c: Fix a cut&paste error, found by
1945         Jaroslaw Kowalski <jarek@atm.com.pl>
1946
1947 2002-05-10  Dan Lewis  <dihlewis@yahoo.co.uk>
1948
1949         * io.c: Nasty typo.
1950
1951 2002-05-09  Dick Porter  <dick@ximian.com>
1952
1953         * threads.c: 
1954         * semaphores.c: 
1955         * processes.c: 
1956         * mutexes.c: 
1957         * handles-private.h: 
1958         * events.c: 
1959         * Makefile.am: Remove now-unused file wait-private.h
1960
1961 2002-05-08  Dick Porter  <dick@ximian.com>
1962
1963         * shared.c: Better error messages, and report when daemon
1964         connection fails rather than blocking forever.  Do some more
1965         shared memory sanity checking.
1966
1967         * handles.c: Better error messages when connecting to shared
1968         memory and the handle daemon.  Fall back to non-shared handles if
1969         an error occurs.  Set the default back to 'shared handles'.  Fix a
1970         crashing bug in scratch space allocation that mangled the block
1971         headers.
1972
1973 2002-05-07  Miguel de Icaza  <miguel@ximian.com>
1974
1975         * handles.c (shared_init): Disable SHM for now, people have too
1976         many problems with this, and the diagnostics are not helping.
1977
1978 2002-05-06  Dan Lewis  <dihlewis@yahoo.co.uk>
1979
1980         * io.c: CreateFile sets win32 last error.
1981
1982 2002-05-05  Dick Porter  <dick@ximian.com>
1983
1984         * wapi-private.h: 
1985         * handles-private.h:
1986         * io.c: 
1987         * io-private.h:
1988         * mutexes.c: 
1989         * mutex-private.h: 
1990         * processes.c: 
1991         * process-private.h: 
1992         * semaphores.c: 
1993         * semaphore-private.h: 
1994         * sockets.c: 
1995         * socket-private.h: 
1996         * events.c: 
1997         * event-private.h: Simplify the WapiHandleOps struct: take out all
1998         the file-specific entries, leaving just the items that operate on
1999         handles themselves.  Split the close operation into shared and
2000         private parts: shared close is called by the daemon.
2001
2002         * handles.c: As above, but also pass handle allocation, ref and
2003         unref operations to the daemon.  Populate the handle_ops array at
2004         compile time, because the daemon needs to call ops on handles too.
2005         Don't bother to track open handle counts any more, the daemon does
2006         that.
2007         
2008         * threads.c: 
2009         * thread-private.h: As above, but also make the thread data
2010         handle-private.
2011
2012         * shared.c: Fork a handle daemon if the calling process created
2013         the shared memory segment.
2014
2015         * daemon.c:
2016         * daemon-messages.c:
2017         * daemon-messages.h:
2018         * Makefile.am: Build a daemon to manage handle allocation and
2019         destruction without needing to lock the shared memory
2020
2021 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
2022
2023         * atomic.c: Changed to use a normal mutex rather than a spinlock
2024         since a lot of platforms seem to not have them :\
2025
2026 2002-04-30  Dick Porter  <dick@ximian.com>
2027
2028         * Completely rewrote the handle waiting code: removed the helper
2029         thread and its attendant complexity.  All handle waiting is now
2030         abstracted into the WaitForSingleObject() and
2031         WaitForMultipleObjects() functions.
2032
2033         * Implemented inter-process sharing of handles using sysv shared
2034         memory.  This makes handles even more opaque, with a handle now
2035         just an index into an array.
2036         
2037 2002-04-25  Dan Lewis  <dihlewis@yahoo.co.uk>
2038
2039         * io.c: unitialized pointer in GetCurrentDirectory.
2040
2041 Sat Apr 20 13:37:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
2042
2043         * threads.c: destroy the mutex at thread destruction
2044         (if/when thread destruction code will be actually called).
2045         When protecting a tls data pointer from the gc, use also the 
2046         thread id in the key.
2047         
2048 Wed Apr 17 18:36:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
2049
2050         * timed-thread.c: avoid race condition when setting the thread to
2051         detached.
2052
2053 2002-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2054
2055         * jit.h: to more #include lines to avoid breaking compilation
2056         under windows when upgrading mingw and w32api to version
2057         1.3 (thanks Dick!).
2058
2059 2002-04-16  Dick Porter  <dick@ximian.com>
2060
2061         * atomic.h: Explanatory comment about lack of 80386 support
2062
2063 2002-04-15  Dick Porter  <dick@ximian.com>
2064
2065         * atomic.h: use xaddl for InterlockedIncrement() and
2066         InterlockedDecrement().  Use cmpxchgl in a loop for
2067         InterlockedExchange() and InterlockedExchangePointer().
2068
2069 Mon Apr 15 13:31:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
2070
2071         * unicode.c: fix unicode_len() to not access uninitialized memory
2072         (and updated to conform to mono code style).
2073
2074 Fri Mar 29 17:15:11 CET 2002 Paolo Molaro <lupus@ximian.com>
2075
2076         * io.c: EEXISTS is ignored for directory creation.
2077         * mono-mutex.h: remove silly "pragma }" that emacs users insert
2078         because they use a broken editor:-)
2079
2080 2002-03-28  Dick Porter  <dick@ximian.com>
2081
2082         * sockets.h: 
2083         * sockets.c: 
2084         * io.c: 
2085         * handles.h: 
2086         * handles.c: Warning cleanups
2087
2088 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
2089
2090         * unicode.h, unicode.c: changed to gunichar2
2091         * io.h, io.c: changed strings to gunichar2*, added
2092         SetFileAttributes(), GetCurrentDirectory(), SetCurrentDirectory(),
2093         some fixes to FindFirstFile() and friends.
2094
2095 2002-03-26  Dick Porter  <dick@ximian.com>
2096
2097         * types.h: Implement the large integer struct
2098
2099         * timefuncs.h:
2100         * timefuncs.c: Dummy functions that don't yet implement
2101         QueryPerformanceCounter() and QueryPerformanceFrequency()
2102
2103         * threads.h:
2104         * threads.c: Implement SleepEx()
2105
2106         * system.h:
2107         * system.c: Beginnings of GetSystemInfo()
2108
2109         * mono-mutex.c (pthread_mutex_timedlock): Fix a ms/ns conversion
2110         thinko
2111
2112         * context.h:
2113         * context.c: Dummy function that doesnt yet implement
2114         GetThreadContext()
2115
2116         * atomic.h: 
2117         * atomic.c: Interlocked functions
2118
2119 Mon Mar 25 13:01:40 CET 2002 Paolo Molaro <lupus@ximian.com>
2120
2121         * threads.c: use a gc-safe hash table to store tls pointers.
2122
2123 2002-03-22  Dick Porter  <dick@ximian.com>
2124
2125         * threads.c: Fix a race condition where a thread can start and
2126         exit before the handle has been properly initialised (no reason
2127         why the handle couldn't be initialised beforehand, so do so)
2128
2129         Fix a ms to ns conversion magnitude thinko.
2130
2131 2002-03-21  Dick Porter  <dick@ximian.com>
2132
2133         * semaphores.c: Fix a problem when waiting for one or more
2134         semaphores, and another semaphore is Released (all waiting
2135         semaphores assumed they were signalled)
2136
2137 2002-03-29  Dan Lewis <dihlewis@yahoo.co.uk>
2138
2139         * io.h, io.c, uglify.h: added MoveFile, CopyFile, CreateDirectory,
2140         RemoveDirectory, GetFileAttributes, GetFileAttributesEx
2141
2142 2002-03-19  Dietmar Maurer  <dietmar@ximian.com>
2143
2144         * threads.c (Sleep): bug fix: 1ms == 1000000ns
2145
2146 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
2147
2148         * io.h, io.c, events.c, mutexes.c, semaphores.c, sockets.c,
2149         threads.c, io.c: added flush method to handles.
2150
2151         * io.c: FlushFileBuffers() and FindFirstFile() functions.
2152
2153 Thu Mar 7 17:21:52 CET 2002 Paolo Molaro <lupus@ximian.com>
2154
2155         * threads.c, timed-thread.c, wait.c: Boehm-GC anable.
2156
2157 2002-02-20  Dick Porter  <dick@ximian.com>
2158
2159         * io-layer.h: Always build without cygwin support on windows
2160
2161 Mon Feb 18 15:50:59 CET 2002 Paolo Molaro <lupus@ximian.com>
2162
2163         * sockets.c: #undef DEBUG.
2164
2165 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
2166
2167         * io-layer.h: conditionally include sys/filio.h and sys/sockio.h
2168         for FIONBIO, FIONREAD, and SIOCATMARK.
2169
2170 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
2171
2172         * sockets.c: conditionally include sys/filio.h and sys/sockio.h
2173         for FIONBIO, FIONREAD, and SIOCATMARK.
2174
2175 2002-02-13  Dick Porter  <dick@ximian.com>
2176
2177         * sockets.c: Implement shutdown and select
2178
2179 2002-02-13  Jeffrey Stedfast  <fejj@ximian.com>
2180
2181         * mono-mutex.[c,h]: New source files that thinly wrap all pthread
2182         functions that take pthread_mutex_t and/or pthread_mutexattr_t
2183         arguments for the sake of portability. Implements recursive
2184         mutexes and pthread_mutex_timedlock.
2185
2186         * critical-sections.c:
2187         * events.c:
2188         * handles.c:
2189         * mutexes.c:
2190         * semaphores.c:
2191         * threads.c:
2192         * timed-thread.c:
2193         * wait.c: Use the mono-mutex wrapper portability functions/macros.
2194
2195         * pthread-compat.[c,h]: Replaced by mono-mutex.[c,h]
2196
2197 2002-01-23  Dick Porter  <dick@ximian.com>
2198
2199         * sockets.c: Networking support, mostly wrapping BSD socket APIs
2200         with handle code, and translating errno into w32 error codes.
2201
2202         * macros.h: Some w32 macros used with the socket support
2203
2204         * error.c: Implemented GetLastError() and SetLastError()
2205
2206         * Makefile.am: Added sockets, with kludge to override some symbols
2207
2208 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
2209
2210         * unicode.c (_wapi_unicode_to_utf8): byteswap UTF16 strings before
2211         passing them to iconv
2212         (_wapi_unicode_to_utf8): only swap bytes on LE systems, remove bug
2213         from previous commit.
2214
2215 2001-12-11  Dick Porter  <dick@ximian.com>
2216
2217         * io.c: Implement DeleteFile(), GetFileTime(), SetFileTime() and
2218         FileTimeToSystemTime().
2219
2220         * unicode.c (unicode_len): Nasty way of finding length of unicode
2221         string with embedded NULLs (counts until two NULLs together).
2222
2223         * mutexes.c (mutex_close): 
2224         * events.c (event_close): Release the internal pthreads resources
2225
2226 2001-11-26  Dick Porter  <dick@ximian.com>
2227
2228         * critical-sections.c:
2229         * events.c:
2230         * handles.c:
2231         * io.c:
2232         * mutexes.c:
2233         * semaphores.c:
2234         * threads.c:
2235         * timed-thread.c:
2236         * wait.c: turn off DEBUG messages
2237
2238 2001-11-22  Dick Porter  <dick@ximian.com>
2239
2240         * handles.c (SignalObjectAndWait): Implement
2241
2242         * wait.c (WaitForSingleObject): Fix case where timeout == 0
2243
2244         * threads.c:
2245         * semaphores.c:
2246         * mutexes.c:
2247         * io.c:
2248         * events.c: Support for SignalObjectAndWait
2249         
2250 2001-11-21  Dick Porter  <dick@ximian.com>
2251
2252         * events.c:
2253         * handles.c:
2254         * mutexes.c:
2255         * semaphores.c:
2256         * threads.c:
2257         * wait.c: Reliable method of returning which handle was signalled
2258         on return from WaitForMultipleObjects().
2259
2260 2001-11-21  Dick Porter  <dick@ximian.com>
2261
2262         * events.c: Implement events
2263
2264 2001-11-15  Dick Porter  <dick@ximian.com>
2265
2266         * mutexes.c: Implement mutexes
2267
2268         * threads.c: 
2269         * semaphores.c: 
2270         * misc.c: Factor out some common code
2271
2272 2001-11-13  Dick Porter  <dick@ximian.com>
2273
2274         * threads.c: Implement TLS.  Implement GetCurrentThreadId(), and
2275         GetCurrentThread() by maintaining a hash of thread handles.
2276
2277         * threads.h: Define thread and process creation flags
2278
2279 2001-11-12  Dick Porter  <dick@ximian.com>
2280
2281         * critical-sections.c: Implement critical sections
2282
2283 2001-11-12  Dick Porter  <dick@ximian.com>
2284
2285         * semaphores.c: Implement semaphores
2286
2287         * wait.c (wait_for_item): Maintain a wait count rather than count
2288         signalled booleans.
2289
2290         * threads.c (thread_wait_multiple): Don't lock the wait item, that
2291         will block other wait threads
2292
2293 2001-11-11  Dick Porter  <dick@ximian.com>
2294
2295         * Makefile.am: Rename some automake variables
2296         (from Nick Drochak <ndrochak@gol.com>)
2297
2298 2001-11-10  Dick Porter  <dick@ximian.com>
2299
2300         * Makefile.am (libwapiincludedir): Fix include destination
2301
2302         * .cvsignore: Ignore generated files
2303
2304 2001-11-10  Dietmar Maurer  <dietmar@ximian.com>
2305
2306         * pthread-compat.c: added some include files to make it compile on
2307         linux.
2308
2309 2001-11-08  Dick Porter  <dick@ximian.com>
2310
2311         * Initial checkin.
2312
2313         This is a library emulating the win32 threading and IO API.