7a6230e470413080a08d59df9f1c9387e5833a08
[mono.git] / mono / io-layer / ChangeLog
1 2008-03-27  Dick Porter  <dick@ximian.com>
2
3         * processes.c (ShellExecuteEx): Grotty kludge to work around
4         unpleasant feature in g_shell_parse_argv() where it treats '#'
5         embedded in a filename as a comment marker, and throws away the
6         rest of the line.  When we're directly opening URLs quote the
7         filename, to avoid this.  Fixes bug 371567.
8
9 2008-03-25  Dick Porter  <dick@ximian.com>
10
11         * wapi-private.h (_WAPI_HANDLE_VERSION): Increment file layout
12         version
13
14         * threads.c: Make thread handles private to the process that owns
15         them.
16
17 2008-03-22  Kornél Pál  <kornelpal@gmail.com>
18
19         * io-layer.h: Windows: Rename GetProcessId to __GetProcessId for targets not
20         supporting it. This fixes MSVC build with new Windows SDKs that declare
21         GetProcessId unconditionally.
22
23 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
24
25         * io-layer.h: Removed Windows version macros.
26
27 Thu Mar 13 16:24:53 CET 2008 Paolo Molaro <lupus@ximian.com>
28
29         * processes.c: properly check for executable files (fixes bug #368829).
30
31 2008-02-05  Dick Porter  <dick@ximian.com>
32
33         * versioninfo.c (VerLanguageName): Implement VerLanguageName.
34
35 2008-01-31  Bill Holmes  <billholmes54@gmail.com>
36         * processes.c (match_procname_to_modulename) : Added to check if the last 
37           part of module name is equal to the process name.
38
39         * processes.c (EnumProcessModules) : Changed the first entry in the returned 
40           modules array (the process module) to be populated from the entry found
41           in /proc/<PID>/maps.
42
43         * processes.c (get_module_name & GetModuleInformation) : In the case where 
44           the module passed in is NULL, search the /proc/<PID>/maps for a name that
45           matches the process name to populate the return information.
46
47         Fixes #357062
48
49 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
50
51         * security.c (RevertToSelf): Make this return TRUE if impersonating is not
52         supported.
53
54         * sockets.c (_wapi_connect): Add a workaround to a solaris x86 problem where
55         getsockopt (SO_ERROR) doesn't return an error code after connect () fails. Fixes
56         #356552.
57
58 2008-01-23  Dick Porter  <dick@ximian.com>
59
60         * versioninfo.c (get_string_block): When stepping over the
61         StringTable block, do not read an extra block at the end.  Fixes
62         the new part of bug 354856.
63
64 2008-01-19  Dick Porter  <dick@ximian.com>
65
66         * versioninfo.c (get_stringtable_block): Cope when the StringTable
67         block is first in the resources data, and we just need to step
68         over it.  Fixes bug 354856.
69
70 2008-01-16  Dick Porter  <dick@ximian.com>
71
72         * threads.c (_wapi_thread_set_termination_details): Move the
73         thread abandonment to outside the shared handle lock.  Fixes bug
74         349680.
75
76 2008-01-16  Dick Porter  <dick@ximian.com>
77
78         * versioninfo.c (VerQueryValue): Include trailing null in returned
79         string length, for MS compatibility.
80
81 2008-01-09  Dick Porter  <dick@ximian.com>
82
83         * versioninfo.c (get_ptr_from_rva, scan_resource_dir): Make it
84         work on big-endian systems.
85         (scan_resource_dir): Copy the resource directory entry and
86         byteswap if necessary so it works big-endian.  This fixes bug
87         345972 for real this time.
88         (VerQueryValue): String values set the length to the number of
89         unicode chars, but the data length reported was already correct so
90         don't halve it again.  Fixes the previous fix for bug 345972.
91         (GetFileVersionInfo): On big-endian systems, scan the resource
92         data and turn all unicode strings into UTF-16BE.  FileVersionInfo
93         now works big-endian.
94
95 2008-01-04  Dick Porter  <dick@ximian.com>
96
97         * versioninfo.c (VerQueryValue): Returned buffer length counts
98         chars not bytes for string data.  Fixes bug 345972 again.
99         (get_enclosing_section_header): Make sure values read are treated
100         as LE.  Fixes crash on ppc reported in bug 345972.
101
102 2007-12-17  Mark Probst  <mark.probst@gmail.com>
103
104         * threads.c: Guard against a race condition involving
105         thread_hash_key that can occur during shutdown.
106
107 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
108
109         * processes.c: Include sys/mkdev.h if exists. Fixes solaris x86 build.
110
111 2007-12-06  Dick Porter  <dick@ximian.com>
112
113         * versioninfo.c: Resource language values must be compared in a
114         'case'-insensitive manner.  Fixes bug 345972.
115
116 2007-12-05  Dick Porter  <dick@ximian.com>
117
118         * io.c (CreateFile): Create files with mode 0666 (&~umask) by
119         default.  Fixes bugs 325299 and 337040.
120
121 2007-11-22  Dick Porter  <dick@ximian.com>
122
123         * critical-sections.h (EnterCriticalSection): Reinstate the
124         asserts in the devel branch, so any problems aren't obscured.
125
126 2007-11-22  Dick Porter  <dick@ximian.com>
127
128         * versioninfo.c (find_pe_file_resources): Make it work on 64bit
129         systems.  Fixes bug 343353.
130
131 2007-11-21  Dick Porter  <dick@ximian.com>
132
133         * processes.c (load_modules): Rewrite based on the libgc
134         /proc/<pid>/maps parsing to avoid using glib functions only
135         available since 2004.
136         (load_modules): Check for duplicates before adding a module to the
137         list.
138
139 2007-11-15  Dick Porter  <dick@ximian.com>
140
141         * processes.c (load_modules): Don't bother if we don't have
142         g_strsplit_set() and g_strv_length().  Allows building against old
143         glib versions.
144         (EnumProcessModules): Don't miss the first module returned by
145         load_modules().
146
147 2007-11-15  Dick Porter  <dick@ximian.com>
148
149         * processes.c: Implement process module support by reading from
150         /proc if it's available.
151
152         * versioninfo.h: 
153         * versioninfo.c: New functions to implement PE file version info
154         support.
155
156 2007-11-08  Dick Porter  <dick@ximian.com>
157
158         * critical-sections.h (EnterCriticalSection): Disable the critical
159         section asserts for the release branch
160
161 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
162
163         * io-layer.h: Added includes for run-time GetProcessId API detection for
164         Windows.
165
166 2007-10-26  Dick Porter  <dick@ximian.com>
167
168         * shared.c (_wapi_shm_file_open): Set the umask when opening
169         shared files, so restrictive defaults don't prevent subsequent
170         processes re-opening them.
171
172 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
173
174         * atomic.h (InterlockedCompareExchange): Fix the ia64 version so it works for
175         negative values too. Hopefully fixes #332700.
176
177 2007-09-26  Dick Porter  <dick@ximian.com>
178
179         * io-portability.c (_wapi_io_scandir): Only update the error
180         status of glob() when performing a secondary glob() if the first
181         returned an error.  Fixes bug 325107.
182
183 2007-09-12  Marek Habersack  <mhabersack@novell.com>
184
185         * io-portability.c: options_init moved to
186         utils/mono-io-portability.c
187         Do not initialize portability helpers here, it's done in
188         mono_runtime_init.
189         find_file and find_in_dir moved to utils/mono-io-portability.c
190
191 2007-09-09  Robert Jordan  <robertj@gmx.net>
192
193         * sockets.c (_wapi_setsockopt): Add support for FreeBSD multicast
194         sockets. Fixes #81891.
195         Code is contributed under MIT/X11 license.
196
197 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
198
199         * processes.h, processes.c : ok, they are simple string.
200
201 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
202
203         * processes.h : sigh, I really hate fixing them on windows :(
204
205 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
206
207         * processes.c : fix build again.
208
209 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
210
211         * processes.h : removed extra parameters from CreateProcessWithLogonW.
212
213 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
214
215         * processes.c, processes.h: added CreateProcessWithLogonW(). For now
216           it just calls CreateProcess().
217         * io-layer.h : CreateProcessWithLogonW() requires WINVER 0x0500
218           on Windows.
219
220 2007-08-23  Robert Jordan  <robertj@gmx.net>
221
222         * processes.[c|h]: Implement Get|SetPriorityClass ().
223         Code is contributed under MIT/X11 license.
224
225 Tue Aug 21 20:08:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
226
227         * io.c: made convert_arg_to_utf8() and write_file() static.
228         Worked around gcc's incorrect warning.
229
230 2007-08-20  William Holmes  <billholmes54@gmail.com>
231
232         *io.c: Added implementation for ReplaceFile.
233         *io.h: Added deceleration for ReplaceFile method.
234
235         Code is contributed under MIT/X11 license.
236
237 2007-08-20  Wade Berrier  <wberrier@novell.com>
238
239         * processes.c: include sys/resource.h for rusage to fix 
240         mac 10.3 build
241
242 Mon Aug 20 12:36:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
243
244         * processes.c: implemented query for user/system times using
245         getrusage ().
246
247 2007-08-10  Dick Porter  <dick@ximian.com>
248
249         * sockets.c (_wapi_getsockopt, _wapi_setsockopt): Check the option
250         level as well as the name when mangling some of the values.  Fixes
251         bug 82000.
252
253 2007-08-02  Dick Porter  <dick@ximian.com>
254
255         * sockets.c: Changes in error handling, and move the SO_REUSEADDR
256         setting from metadata/socket-io.c.
257
258 2007-08-01  Dick Porter  <dick@ximian.com>
259
260         * io-portability.c (_wapi_io_scandir): Special-case patterns
261         ending in '.*' so that files with no extension are also matched.
262         Fixes bug 82212.
263
264         * wapi_glob.h: 
265         * wapi_glob.c: Reinstate WAPI_GLOB_APPEND, and add
266         WAPI_GLOB_UNIQUE to avoid matching the same entry twice when
267         appending.
268
269 2007-07-26  Dick Porter  <dick@ximian.com>
270
271         * handles-private.h: 
272         * thread-private.h: 
273         * handles.h: 
274         * critical-sections.c: 
275         * handles.c: 
276         * critical-section-private.h:
277         * error.h: 
278         * threads.c: 
279         * error.c: Clean up TLS and pthreads structures.  Finishes off bug
280         78739.
281
282         * collection.c (collection_thread): Exit the collection thread if
283         the io-layer has been cleaned up.
284
285         * mono-mutex.h (mono_mutexattr_destroy): Add this define too
286
287 Mon Jul 23 10:40:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
288
289         * timefuncs.c: make TickCount measure from boot time if it's
290         available.
291
292 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
293
294         * io.c (MoveFile): Fix a leak. 
295
296 Fri Jul 13 12:46:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
297
298         * handles-private.h, handles.c, thread-private.h, threads.c,
299         uglify.h, wait.c: temporarily revert the alertable wait changes
300         (r79386) until the deadlock issues are fixed.
301
302 2007-06-22  Dick Porter  <dick@ximian.com>
303
304         * shared.c: The non-shared mutexes weren't being initialised properly
305         on macos.  Fixes bug 81929.
306
307 2007-06-13  Randolph Chung  <tausq@debian.org>
308
309         * atomic.h: Enable for all hppa targets.
310         * Makefile.am: rename hppa_atomic.s to hppa_atomic.S so the preprocessor
311         can handle the file.
312         * hppa_atomic.s: Renamed to ...
313         * hppa_atomic.S: ... and updated to work on both HPUX and Linux.
314
315 2007-06-13  Dick Porter  <dick@ximian.com>
316
317         * handles.c (timedwait_signal_wait_cond): Alertable waits on
318         private handles are now interrupted by signalling the same
319         condition that would end the wait if the handle became signalled,
320         rather than polling.  (Shared handles still have to poll.)
321
322         * threads.c (_wapi_thread_queue_apc): Interrupt the thread if it's
323         waiting on a handle
324
325         * handles-private.h (_wapi_handle_current_thread_set_waiting_on):
326         Helper functions to inform the APC queuing functions when threads
327         are waiting for handles, and to interrupt the wait.
328
329         * wait.c (WaitForMultipleObjectsEx): Need to tell the handle
330         waiting functions if any of the handles in question are shared
331
332 2007-06-06  Miguel de Icaza  <miguel@novell.com>
333
334         * processes.c (is_managed_binary): Fix for OSX.
335
336 2007-06-06  Wade Berrier  <wberrier@novell.com>
337
338         * atomic.h (InterlockedExchangePointer): cast to pointer to to silence
339         compiler warnings (autobuild fails the build on this type of warning)
340
341 2007-05-21  Dick Porter  <dick@ximian.com>
342
343         * io-portability.c (_wapi_g_dir_open): Don't propagate any errors
344         from the second call to g_dir_open, preserve the original error if
345         the second call still fails but clear the error if it succeeds.
346
347 2007-05-10  Dick Porter  <dick@ximian.com>
348
349         * sockets.c (_wapi_recvfrom): Refine the fix to bug 75705 so EINTR
350         isn't returned if the remote end shuts down cleanly.  Fixes zmd
351         and the second example in bug 75705.
352
353 2007-04-26  Dick Porter  <dick@ximian.com>
354
355         * shared.c (_wapi_shm_semaphores_init): Need to check
356         MONO_DISABLE_SHM in this entry point, as it's called before
357         _wapi_shm_attach().  Fixes bug 81436.
358
359 2007-04-24  Dick Porter  <dick@ximian.com>
360
361         * sockets.c (_wapi_recvfrom, socket_close): Force recvfrom() to
362         error if the socket is closed while the receive is blocking.
363         Fixes bug 75705.
364
365 2007-04-13  Dick Porter  <dick@ximian.com>
366
367         * shared.h:
368         * shared.c: Complete the reimplementation of disabling of shared
369         memory, by not allocating sysv semaphores when shm disabling has
370         been requested (either at compile time or run time.)
371
372         * processes.c (CreateProcess): Don't synchronize locking across
373         processes when forking, when shared memory has been disabled.
374
375 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
376
377         * wapi_glob.h:
378         * wapi_glob.c: remove reference to sys/cdefs.h, use glib instead.
379         Fixes: 81326
380
381 2007-04-05  Dick Porter  <dick@ximian.com>
382
383         * io.c:
384         * io-portability.c (_wapi_io_scandir): Moved from io.c, and
385         changed to use a cut-down version of glob(3) that has been
386         extended to match with case-insensitivity if needed.
387
388         * wapi_glob.h:
389         * wapi_glob.c: Cut down implementation of glob(3), based on
390         OpenBSD.
391
392 2007-03-22  Dick Porter  <dick@ximian.com>
393
394         * sockets.c (_wapi_connect): Do additional checks when connect(2)
395         fails, because some systems don't let it be restarted.  Patch
396         based on one submitted by Robert S Wojciechowski <robertw@ssgx.com>,
397         fixes bug 81010.
398
399 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
400
401         * io-layer.h:  Remove UNICODE and _UNICODE defines as 
402         these are done by configure.in now.
403         
404         Code is contributed under MIT/X11 license.
405         
406 Thu Mar 8 19:42:17 CET 2007 Paolo Molaro <lupus@ximian.com>
407
408         * shared.c: partial support for MONO_DISABLE_SHM env var.
409
410 2007-03-05  Wade Berrier  <wberrier@novell.com>
411
412         * atomic.h: atomic fixes from Michael Matz for for s390 
413         and s390x ( bnc #237611 and bxc #80892 )
414
415 2007-03-05  Miguel de Icaza  <miguel@novell.com>
416
417         * io.c (CreateFile): Use FILE_ATTRIBUTE_TEMPORARY to mean 0600
418         permissions.  For 80688
419
420         (MoveFile): Use errno_copy here, just to avoid a potential
421         errno-changing code in the future from g_free. 
422         
423         Also, ignore EXDEV errors as they are handled immediately after
424         (avoid printing out an error). 
425
426         Fixes: 80655
427
428 Mon Feb 12 15:50:24 CET 2007 Paolo Molaro <lupus@ximian.com>
429
430         * shared.c: exit if semaphores can't be created (bug #80616).
431
432 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
433
434         * collection.c: NetBSD doesn't define PTHREAD_STACK_MIN.
435
436 2007-01-26  Dick Porter  <dick@ximian.com>
437
438         * socket-private.h: 
439         * sockets.c (_wapi_getsockopt): Windows seems to not reset
440         SO_ERROR values when they're read, contrary to the documentation.
441         Fixes the new issues raised in bug 79878 (example in C showing
442         winsock behaviour attached to that bug.)
443
444 2007-01-15 Mark Mason <mason@broadcom.com
445
446         * atomic.h: add locking primitives for MIPS.
447         
448 2007-01-11  Dick Porter  <dick@ximian.com>
449
450         * sockets.c (_wapi_connect): Don't do the SO_BROADCAST setting
451         here, do it in managed code instead.
452         (_wapi_getsockopt): SO_RCVTIMEO and SO_SNDTIMEO use struct
453         timeval, which has a microsecond field, not milliseconds.
454         (_wapi_setsockopt): ditto.
455         (_wapi_setsockopt): Halve the SO_SNDBUF and SO_RCVBUF values on
456         Linux, as the kernel doubles whatever we set.
457         (_wapi_socket): Save socket domain, type and protocol so it can be
458         duplicated later.
459         (socket_disconnect): Implement socket disconnect (closing the
460         socket, but keeping the file descriptor.)
461         (wapi_disconnectex): A basic implementation of DisconnectEx().
462         (wapi_transmitfile): A very basic implementation of
463         TransmitFile().
464         (WSAIoctl): Implement the SIO_GET_EXTENSION_FUNCTION_POINTER
465         ioctl.
466
467         * socket-private.h (struct _WapiHandle_socket): Record socket
468         domain, type and protocol info so it can be duplicated later.
469
470         * sockets.h (WSAID_DISCONNECTEX,WSAID_TRANSMITFILE): Structures
471         and defines needed to look up the DisconnectEx() and
472         TransmitFile() functions by GUID.
473
474         * error.c (errno_to_WSA): Change ETIMEDOUT mapping to
475         WSAETIMEDOUT; add EDESTADDRREQ.
476
477         * io-layer.h: Need mswsock.h on windows now.
478
479 2007-01-04  Miguel de Icaza  <miguel@novell.com>
480
481         * io-portability.c (find_file): Fix a coverity warning (scanning
482         being unassigned).   
483
484 2006-12-31  Miguel de Icaza  <miguel@novell.com>
485
486         * io-portability.c (find_file): Do not abort if an empty filename
487         has been passed.  This fixes the case where MONO_IOMAP=all would
488         assert if Directory.Exists ("") was called.
489
490 Mon Dec 18 14:54:37 CET 2006 Paolo Molaro <lupus@ximian.com>
491
492         * processes.c: moved a free on the error path.
493
494 Thu Dec 14 21:42:39 CET 2006 Paolo Molaro <lupus@ximian.com>
495
496         * processes.c: fixed a few memory leaks when executing
497         processes.
498
499 Mon Nov 27 13:12:17 GMT 2006 Paolo Molaro <lupus@ximian.com>
500
501         * atomic.h: fix arm compare and exchange (bug #78500).
502
503 2006-11-23  Dick Porter  <dick@ximian.com>
504
505         * process-private.h (struct _WapiHandle_process): Add 'waited'
506         parameter
507
508         * processes.c (process_wait): Check the 'waited' parameter not the
509         signalled state when testing if a process has already been waited
510         for, as the child process itself may set signalled when exiting.
511         Fixes bug 79885.
512
513         * wapi-private.h (_WAPI_HANDLE_VERSION): Bump shared data version
514
515         * shared.c: Now the shared data version has been incremented we
516         can set the counter semaphore initial value correctly
517
518 2006-11-22  Dick Porter  <dick@ximian.com>
519
520         * processes.c (process_wait): Cope when the background process
521         reaper gets the process we were waiting for.  Special case for
522         waiting for our own process to exit.  Fixes bug 77736.
523
524 2006-11-17  Dick Porter  <dick@ximian.com>
525
526         * processes.c: Fix const correctness and typos that caused memory
527         corruption. 
528         
529 2006-11-17  Miguel de Icaza  <miguel@novell.com>
530
531         * processes.c (ShellExecuteEx): Check error after CreateProcess,
532         thanks to Dick for pointing this out. 
533
534 2006-11-16  Miguel de Icaza  <miguel@novell.com>
535
536         * processes.c (ShellExecuteEx): If we fail to create a process in
537         ShellExecute, then try to use the xdg-open command, and if that
538         fails, try to use the gnome-open command, 
539
540         Refactor the code so that we do not have to duplicate all this
541         code, but instead use a ucs2-aware version of the code to do
542         concatenations.
543
544 2006-11-13  Dick Porter  <dick@ximian.com>
545
546         * io.c (_wapi_stat_to_file_attributes): If the file is a symlink
547         add the FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to
548         follow the specs for the windows symlink support, but will
549         probably have to be reworked when I have test data from a vista
550         machine.  Fixes bug 79887.
551
552 2006-11-11  Miguel de Icaza  <miguel@novell.com>
553
554         * handles.c (CloseHandle): Cope here with the new value
555         INVALID_HANDLE_VALUE set on handles.  
556
557         * processes.c (CreateProcess): Initialize the value of hThread to
558         be INVALID_HANDLE_VALUE on failure, not to be NULL.  Improvement
559         for #75733
560
561 2006-11-09  Dick Porter  <dick@ximian.com>
562
563         * sockets.c (_wapi_select): Do some sanity checking on the
564         fd_sets, to avoid file descriptors > FD_SETSIZE.
565         (_wapi_FD_CLR, _wapi_FD_ISSET, _wapi_FD_SET): Avoid file
566         descriptors > FD_SETSIZE.
567
568 2006-10-27  Dick Porter  <dick@ximian.com>
569
570         * io.c (GetFileAttributes): Force symlinks to directories to be
571         returned as a regular file.  Fixes bug 79733.
572
573 2006-10-18  Miguel de Icaza  <miguel@novell.com>
574
575         * io-portability.c (find_in_dir): First string dup, then closedir.
576
577 2006-10-12  Dick Porter  <dick@ximian.com>
578
579         * processes.c (_wapi_process_reap): Unref a process handle if we
580         reaped it, found by Zoltan.  Fixes bug 79286.
581         (process_wait): Don't wait again if we've already waited for a
582         process.
583
584 2006-10-11  Sergey Tikhonov <tsv@solvo.ru>
585
586         * atomic.h: Fix atomic decrement.
587
588         * mini/cpu-alpha.md: Use native long shift insts
589
590         * mono/mono/mini/tramp-alpha.c: Implemented
591         mono_arch_patch_delegate_trampoline method
592
593         * Started work on using global registers
594         
595         * Use byte/word memory load/store insts if cpu supports it
596         
597         * Code clean up
598
599         
600 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
601
602         * handles.c (timedwait_signal_poll_cond): Add an alertable parameter, and if it
603         is FALSE, avoid busy waiting.
604
605         * wait.c: Add an alertable parameter to the wait routines.
606
607 2006-10-06  Miguel de Icaza  <miguel@novell.com>
608
609         * io-portability.c (find_file): Rename from
610         MONO_IO_PORTABILITY_HELP to MONO_IOMAP.
611
612 2006-10-03  Dick Porter  <dick@ximian.com>
613
614         * io-portability.h: 
615         * io-portability.c: Optional portability helpers and wrapped
616         system calls to try to cope with windows filenames in
617         applications.
618
619         * io.c: Use the wrapped system calls
620
621 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
622
623         * critical-sections.h critical-sections.c: Make Enter/LeaveCriticalSection a macro
624         since they are perf critical.
625
626         * atomic.h: Applied patch from Jakub Boqusz <qboosh@pld-linux.org>.
627         Add atomic ops implementation for alpha.
628
629 2006-08-11  Dick Porter  <dick@ximian.com>
630
631         * processes.c (_wapi_process_reap): Avoid a deadlock by setting
632         process termination details in an outer loop, not the
633         _wapi_search_handle() one.
634
635 2006-08-10  Dick Porter  <dick@ximian.com>
636
637         * threads.c (_wapi_thread_queue_apc)
638         (_wapi_thread_dispatch_apc_queue): Use a process-local mutex here
639         instead of the cross process semaphore.  We already check that
640         access to the APC queue is within the owning process so there's no
641         need to protect from other processes.  Avoids a global deadlock
642         when a thread is aborted while it holds the handle semaphore
643         locked.
644         (_wapi_thread_apc_pending): Hide an annoying message which can
645         happen if a thread handle has been blown away at process shutdown
646         while it is in an alertable wait.
647
648         Both problems seen while shutting down monodevelop.
649
650 2006-07-25  Dick Porter  <dick@ximian.com>
651
652         * shared.c (_wapi_shm_file): Remove '/' characters from the uname
653         results.  Fixes bug 78917.
654
655 2006-07-20  Dick Porter  <dick@ximian.com>
656
657         * threads.c (_wapi_thread_set_termination_details): Improve the
658         test for already-disposed thread handles, and hold the lock around
659         the mutex abandoning.
660
661 2006-07-17  Dick Porter  <dick@ximian.com>
662
663         * processes.c (CreateProcess): Don't change directory unless a new
664         one has been specified.  Fixes bug 78751.
665
666 2006-07-06  Dick Porter  <dick@ximian.com>
667
668         * io.c (_wapi_stat_to_file_attributes): Do a better job at
669         figuring out the file attributes
670         (_wapi_set_last_path_error_from_errno): New helper function to
671         turn errno into w32 error codes that handles the differences
672         between file and directory errors
673         (file_setendoffile): Try turning off the extra write used to
674         extend files, because we probably don't need it on any modern
675         platform.  If it is needed though, we also need to lseek the file
676         position back again
677         (CreateFile): Treat character-special devices as a console handle,
678         because they can't be seeked
679         (CopyFile): If fail_if_exists is set, then the destination needs
680         to be opened with O_EXCL
681         (CopyFile): If fail_if_exists is not set and the destination
682         already exists, then we should set the ERROR_ALREADY_EXISTS error
683         even though we return success
684         (stdhandle_create): STD_INPUT_HANDLES cannot be written to
685         (GetStdHandle): Rework without using mono_once, so console handles
686         can be properly closed and reopened.
687         (mono_io_scandir): Only override errno with EACCES when the
688         directory actually exists
689         (FindFirstFile): Set ERROR_FILE_NOT_FOUND when no files are
690         returned
691         (FindClose): Cope with NULL handles
692         (CreateDirectory): When the target already exists, just return an
693         error.  It's the caller's job to figure out what to do.
694         (SetCurrentDirectory): Cope with a NULL path
695         (RemoveDirectory, GetFileAttributes, GetFileAttributesEx,
696         SetFileAttributes, FindFirstFile, DeleteFile, MoveFile, CopyFile,
697         CreateFile): Set path error correctly
698
699         * handles.c (CloseHandle): Kludge to try and cope with passing a
700         NULL handle
701
702         * error.h: Add NO_ERROR as an alternative to ERROR_SUCCESS
703
704         * uglify.h: Added some more typedefs
705
706 2006-07-05  Dick Porter  <dick@ximian.com>
707
708         * io.c (GetFileAttributes, GetFileAttributesEx): Cope with
709         dangling symlinks.  Fixes bug 78664.
710
711 2006-06-23  Dick Porter  <dick@ximian.com>
712
713         * handles.c (handle_cleanup): 
714         * threads.c: Clean up threads properly when we're forcibly
715         removing the handle entries from the shared file in
716         handle_cleanup().  Fixes bug 78241, for real this time.
717
718 2006-06-15 Neale Ferguson <neale@sinenomine.net>
719
720         * atomic.h: More tinkering with InterlockedExchange/InterlockedCompareExchange
721         for s390/s390x.
722
723 2006-06-14 Neale Ferguson <neale@sinenomine.net>
724
725         * atomic.h: Fix atomic exchange pointer operations for s390x - these
726         were broken as they used 32-bit instructions rather than their 64-bit
727         versions.
728
729 2006-06-14  Dick Porter  <dick@ximian.com>
730
731         * processes.c: Don't run the atexit handlers when bailing out
732         of a fork/exec.
733
734 2006-06-14  Dick Porter  <dick@ximian.com>
735
736         * wait.c: Fix stupid typo shown up by gcc 4.1.1, = not ==
737
738         * handles-private.h: 
739         * shared.c: 
740         * io.c: 
741         * processes.c: 
742         * mono-spinlock.h: 
743         * handles.c: 
744         * collection.c: Fix a bunch of signed/unsigned warnings from gcc
745         4.1.1
746
747 2006-06-09 Neale Ferguson <neale@sinenomine.net>
748
749         * atomic.h: Fix atomic operations for s390x (not really broken 
750         but changed to use full 64-bit opcodes).
751
752 2006-05-24  Dick Porter  <dick@ximian.com>
753
754         * processes.c (process_set_current): Don't take an extra reference
755         if we have to create our own process handle.  Fixes bug 78241
756         again.
757
758         * threads.c (_wapi_thread_signal_self): Renamed from
759         _wapi_thread_abandon_mutexes, also sets the thread state to
760         signalled and drops a reference.  Called by the runtime when the
761         main thread cleans itself up.
762
763         * handles.c (handle_cleanup): As a last resort, unref every shared
764         handle as the process is now exiting.
765
766 2006-05-16  Dick Porter  <dick@ximian.com>
767
768         * processes.c (process_set_termination_details): Unref the handle
769         when we've stored the exit details.  Fixes the rest of 78241.
770
771 2006-05-12  Dick Porter  <dick@ximian.com>
772
773         * threads.c: Implement pseudo handles, making GetCurrentThread()
774         match MS behaviour.  Notice when attached threads exit, and unref
775         the handle.  Fix usage of GetCurrentThread() in other places.
776
777         * handles.c (DuplicateHandle): Implement a basic form of
778         DuplicateHandle().
779
780         * wait.c: Fix usage of GetCurrentThread() throughout, and cope
781         with pseudo handles.
782
783 2006-04-26  Miguel de Icaza  <miguel@novell.com>
784
785         * io.c (file_close): Oops, do not use DeleteFile which expects
786         unicode, instead use unlink directly
787
788         Add support for the new FileOptions bits on .NET 2.0.
789
790         It might be good if Dick reviews these changes.
791         
792         * io.c (file_close): If DeleteOnClose is set, then delete the file
793         before freeing it.
794         (CreateFile): Do not support encryption per user. 
795         
796         If posix_fadvise exists, pass hints on sequential scan and random
797         access.   Did not figure out what WRITE_THROUGH maps to.
798
799 2006-04-26  Dick Porter  <dick@ximian.com>
800
801         * sockets.c (WSAIoctl): Check the output buffer is valid before
802         writing to it.
803
804         * handles.c (_wapi_search_handle): Set shared pointer if we find a
805         shared handle that has been already opened.
806
807 2006-04-21  Dick Porter  <dick@ximian.com>
808
809         * threads.c (GetCurrentThread): Reference the handle if we return
810         an already-known thread.
811
812 2006-04-07  Dick Porter  <dick@ximian.com>
813
814         * processes.c: Fix build for older glib.
815
816 2006-04-06  Dick Porter  <dick@ximian.com>
817         
818         * processes.c (CreateProcess): Add a reference to the child
819         process' handle, so it won't be destroyed if this process closes
820         its copy of the handle.  Fixes bug 77393.
821         
822         * processes.c (process_set_current): Fall through to creating a
823         new one if the handle lookup fails.
824
825         * processes.c (_wapi_process_signal_self):
826         * handles.c (handle_cleanup): The process is exiting, so set the
827         handle state for this process to signalled.  This should let other
828         non-related processes wait for this handle.
829         
830         * handles.c (_wapi_search_handle): Don't search shared handles in
831         all cases.
832
833         * collection.c (collection_thread): No need to do a collection
834         scan straight away, do the waiting first.
835
836 2006-04-06  Dick Porter  <dick@ximian.com>
837
838         * shared.c: Fix parameters in semctl () call.
839
840 2006-03-28  Zoltan Varga  <vargaz@gmail.com>
841
842         * atomic.h atomic.c: Applied patch from David S. Miller 
843         <davem@davemloft.net>: Reimplement Interlocked* primitives on sparc 
844         using CAS/CASx when __GNUC__, else we will fall back to the generic 
845         pthread version.
846
847 2006-03-27  Dick Porter  <dick@ximian.com>
848
849         * shared.c (_wapi_shm_file_open): Break out of a loop if the
850         shared file is smaller than expected.  (We loop a few times in
851         case another process is in the middle of creating the file.)
852
853 2006-03-22  Dick Porter  <dick@ximian.com>
854
855         * handles.c:
856         * wapi-private.h:
857         * shared.h:
858         * shared.c: Delete the semaphores and shared files when the last
859         process has finished with them
860
861 2006-03-15  Dick Porter  <dick@ximian.com>
862
863         * events.c: 
864         * io.c: 
865         * mutexes.c: 
866         * processes.c: 
867         * semaphores.c: 
868         * sockets.c: 
869         * threads.c: Explicitly initialise the handle ops struct
870
871 2006-03-14  Dick Porter  <dick@ximian.com>
872
873         * handles-private.h: 
874         * wapi-private.h: 
875         * wait.c: 
876         * handles.c: Add a 'prewait' stage to the handle waiting, to give
877         waiting threads a chance to check for bogus states before
878         blocking.
879
880         * mutexes.c (namedmutex_prewait): Use the prewait stage to check
881         for named mutexes that have been abandoned in a locked state (eg
882         if a process exited abnormally while owning the mutex) and
883         override it if needed.
884
885 2006-03-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
886
887         * wait.c: speed up WaitFor* when the timeout is 0.
888
889 2006-03-03  Dick Porter  <dick@ximian.com>
890
891         * processes.c (ShellExecuteEx): Cope when some of the parameters
892         are NULL.
893
894 2006-02-27  Dick Porter  <dick@ximian.com>
895
896         * mutexes.c: 
897         * mono-mutex.c: 
898         * threads.c: Comparing pthread_t with == is not portable, so use
899         pthread_equal().
900
901 Thu Feb 23 18:47:20 GMT 2006 Paolo Molaro <lupus@ximian.com>
902
903         * *.h, *.h: patch from Dick to make Linuxthreads systems work again.
904
905 2006-02-22  Dick Porter  <dick@ximian.com>
906
907         * thread-private.h: 
908         * threads.c: There's no need to use the timed-thread support code
909         any more, as we aren't using the timed join.  This greatly
910         simplifies thread setup, and fixes a memory leak (bug 77521).
911
912         Don't bother to store thread IDs in a hash table, use TLS instead.
913         The one case that needs to look up the handle of a different
914         thread (OpenThread()) can do the extra work itself.  Fixes bug
915         77536.
916
917         * handles.c (_wapi_search_handle): Add a reference when returning
918         a private handle (shared handles are already reffed.)
919         
920 2006-02-17  Dick Porter  <dick@ximian.com>
921
922         * handles-private.h: 
923         * handles.c: Check handle values passed to array lookups.  Fixes
924         bug 77572.
925
926 2006-02-09  Dick Porter  <dick@ximian.com>
927
928         * threads.c: Cope with the problems caused by attaching already
929         existing threads - they don't get the infrastructure to clean up
930         after themselves, especially the ID to handle hash.  This fixes
931         bug 77468.
932
933 2006-02-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
934
935         * shared.c: use MONO_SHARED_HOSTNAME as a substitute for gethostname()
936         when creating the shared files in the .wapi directory. Fixes bug #77371.
937
938 2006-02-02  Martin Baulig  <martin@ximian.com>
939
940         * threads.c: Removed the `WITH_INCLUDED_LIBGC' section; it has
941         never been used so far. 
942
943         * timed-thread.h (TimedThread): Removed the `stack_ptr' field; it
944         has only been used by the removed code.
945
946 2006-01-03  Neale Ferguson <neale@sinenomine.net>
947
948         * atomic.h: Correct s390x definitions and eliminate compiler warnings.
949
950 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
951
952         * io.c: Patch _wapi_stat_to_file_attributes against bug #76966, where
953         sockets could be considered as directory.
954
955 2005-12-23  Dick Porter  <dick@ximian.com>
956
957
958         * semaphores.h: 
959         * semaphores.c: Implement OpenSemaphore
960
961         * mutexes.c: 
962         * mutexes.h: Implement OpenMutex
963
964         * wapi-private.h: 
965         * handles.c: 
966         * events.c: 
967         * events.h: 
968         * event-private.h: Implement named events.  Implement OpenEvent.
969
970 2005-12-15  Dick Porter  <dick@ximian.com>
971
972         * processes.c (CreateProcess): The pipe-based cross-process
973         exclusion technique was trying to write NULL buffers when appname
974         was NULL (eg when coming from ShellExecuteEx,) which usually
975         succeeded even though EFAULT was returned - but sometimes it
976         failed.  This meant that the child process could block forever on
977         the pipe read.  Replace it with the simpler shared handle
978         semaphore protection used everywhere else.  This showed up with
979         the test case in bug 76684.
980
981 Tue Dec 13 11:41:49 GMT 2005 Paolo Molaro <lupus@ximian.com>
982
983         * shared.c: fallback to private mmap when shared mmap doesn't work
984         (like on jffs).
985
986 2005-12-06  Dick Porter  <dick@ximian.com>
987
988         * wapi-private.h: 
989         * handles.c: 
990         * semaphore-private.h: 
991         * semaphores.c: Implement named semaphores
992
993 2005-11-24  Dick Porter  <dick@ximian.com>
994
995         * processes.c (GetProcessId): Implement GetProcessId()
996
997 2005-11-17  Dick Porter  <dick@ximian.com>
998
999         * processes.h: 
1000         * processes.c: Implement ShellExecuteEx as a wrapper around
1001         CreateProcess.
1002
1003 2005-11-11  Dick Porter  <dick@ximian.com>
1004
1005         * threads.c: Give mutex abandoning its own exported function, so
1006         it can be called when the runtime is cleaning up.
1007
1008         * handles.c (_wapi_search_handle_namespace): Do a handle
1009         collection befre starting to check namespace strings, so that any
1010         stale cruft gets removed.
1011
1012 2005-11-11  Dick Porter  <dick@ximian.com>
1013
1014         * threads.c: Move thread handles back into the shared space.
1015
1016         * handles.c (_wapi_handle_unref): Add support for shared handles
1017         with close() handlers
1018
1019 2005-11-04  Dick Porter  <dick@ximian.com>
1020
1021         * sockets.c (ioctlsocket): Use select instead of if to avoid a
1022         type promotion problem on 64bit freebsd.  Based on patch by Lou
1023         Kamenov <kamenovl@gmail.com>, fixes bug 76447.
1024
1025 2005-11-04  Dick Porter  <dick@ximian.com>
1026
1027         * io.c (file_write): Only do the file locking if
1028         MONO_STRICT_IO_EMULATION is set.
1029
1030 2005-10-21  Dick Porter  <dick@ximian.com>
1031
1032         * processes.c: 
1033         * handles.c (_wapi_lookup_handle): Cope when the shared part of a
1034         handle has been deleted.
1035         (_wapi_handle_unref): And when the deleted shared part is pointed
1036         to as a handle is deleted
1037
1038 2005-10-20  Dick Porter  <dick@ximian.com>
1039
1040         * processes.c (process_set_current): If the expected process
1041         handle slot doesn't contain the correct pid, create a new handle.
1042
1043         * handles.c (_wapi_search_handle): When the search doesn't find
1044         anything, return failure instead of the last handle we looked at.
1045         (_wapi_handle_ref, _wapi_handle_unref): Don't try to ref or unref
1046         unused handles (makes tracking refcounting bugs easier.)
1047
1048 2005-10-19  Dick Porter  <dick@ximian.com>
1049
1050         * handles.c:
1051         * handles-private.h:
1052         * wapi-private.h: 
1053         * processes.c: 
1054         * mutexes.c:
1055         * collection.c (_wapi_handle_collect): Remove the shared handle
1056         indirection layer, and use locking instead.  Delete other
1057         complexity that is no longer needed.  Refcount shared handles and
1058         delete them when needed, but keep the timestamps so that orphaned
1059         handles will be cleaned up eventually.
1060
1061         * shared.c (_wapi_shm_file): Add processor, OS and struct size
1062         info to the shared file names, to cope with dual-boot and 32/64bit
1063         size issues.  Fixes bug 75839.
1064
1065         * wait.c (WaitForMultipleObjectsEx): No need to distinguish
1066         between shared handles and private, as the wait functions cope
1067         with both together now.
1068
1069 2005-10-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1070
1071         * io.c: removed NO_SIGPIPE macro.
1072         * sockets.c: no need for MSG_NOSIGNAL or ignoring SIGPIPE.
1073
1074 2005-10-11  Dick Porter  <dick@ximian.com>
1075
1076         * sockets.c (_wapi_getsockopt): Translate SO_ERROR results into
1077         w32 error codes.
1078
1079         * error.c (errno_to_WSA): Don't return a bogus error if someone
1080         asks to translate errno 0.
1081
1082 2005-10-11  Dick Porter  <dick@ximian.com>
1083
1084         * handles.c: Fix several race conditions
1085
1086 2005-10-11 Miguel de Icaza <miguel@novell.com>
1087
1088         * io.c: no need to block SIGPIPE anymore, as it is ignored.
1089
1090 2005-10-05  Dick Porter  <dick@ximian.com>
1091
1092         * threads.c (_wapi_thread_own_mutex, _wapi_thread_disown_mutex):
1093         Keep a reference to mutexes owned by threads, so they won't be
1094         destroyed prematurely.  Fixes dotmsnclient crash.
1095
1096 2005-09-26  Sebastien Pouliot  <sebastien@ximian.com>
1097
1098         * io.c: Apply patch from #76192 (Can't write files past 2gb on AMD64 
1099         (x86_64)) for Brion on IRC (Dick approved it).
1100
1101 2005-09-23  Dick Porter  <dick@ximian.com>
1102
1103         * processes.c: Don't wait for processes that have already been
1104         signalled; also fix typo.
1105
1106         * handles.c: Improve locking inside new handle and handle
1107         searching functions.
1108
1109 2005-09-20  Dick Porter  <dick@ximian.com>
1110
1111         * collection.c: 
1112         * processes.c: Periodically waitpid for known process IDs.  Fixes
1113         bug 74870.
1114
1115 2005-09-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1116
1117         * io.c:
1118         (CreateFile): if the file is a named pipe, treat the handle as a pipe,
1119         not as a file. Fixes bug #76075.
1120
1121 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
1122
1123         * atomic.h: Add support for intel icc.
1124
1125 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
1126
1127         * io-layer.h: Include winbase.h not WinBase.h.
1128
1129 2005-08-19  Dick Porter  <dick@ximian.com>
1130
1131         * threads.c, threads.h, thread-private.h: Use a gsize to store the
1132         thread ID, so it can hold a 64 bit value if needed.
1133
1134 2005-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1135
1136         * error.c: map ENOENT to WSAECONNREFUSED. It might happen when
1137         connecting to unix sockets. Closes bug #75632.
1138
1139 2005-07-05  Dick Porter  <dick@ximian.com>
1140
1141         * io.c: Make sure SIGPIPE is ignored when calling write(2).
1142         Prevents the runtime exiting when writing to a closed pipe,
1143         fixing bug 75468.
1144
1145 2005-06-30  Dick Porter  <dick@ximian.com>
1146
1147         * shared.c (_wapi_shm_semaphores_init): Add some helpful error
1148         messages when semget () fails due to lack of resources.
1149
1150 2005-06-21  Dick Porter  <dick@ximian.com>
1151
1152         * mutex-private.h:
1153         * thread-private.h:
1154         * mutexes.c: 
1155         * threads.c: Keep a list of owned mutexes in each thread handle,
1156         so that it is easier to abandon them when the thread exits.
1157         Removes a bottleneck when multiple threads are finishing in
1158         parallel.
1159
1160 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1161
1162         * io.c: (GetLogicalDrives) when a bogus line is read, don't leak memory.
1163         When the buffer has not enough space, close the file before returning.
1164
1165 2005-06-09  Duncan Mak  <duncan@novell.com>
1166
1167         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
1168         all public headers. Fixes #74919.
1169
1170 2005-05-30  Zoltan Varga  <vargaz@freemail.hu>
1171
1172         * atomic.h: Add IA64 atomic ops.
1173
1174 2005-05-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1175
1176         * processes.c: make ExitCode be valid even if the user didn't call
1177         WaitForExit() and is just polling on HasExited.
1178
1179 2005-05-17  Dick Porter  <dick@ximian.com>
1180
1181         * io.c (file_getfilesize): Clear the error value, so that files
1182         with sizes with the low bits 0xFFFFFFFF can be distinguished from
1183         a genuine error.
1184
1185 2005-05-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1186
1187         * shared.c: forgot to ignore a warning.
1188
1189 2005-05-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1190
1191         * shared.c: don't display warnings after reboots.
1192
1193 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1194
1195         * sockets.c: on windows, getsockopt/setsockopt for send/receive timeout
1196         use an integer in milliseconds. We were using a struct timeval.
1197
1198 2005-05-06  Dick Porter  <dick@ximian.com>
1199
1200         * handles-private.h: 
1201         * mutexes.c: 
1202         * wapi-private.h: 
1203         * shared.h:
1204         * shared.c: 
1205         * wait.c: 
1206         * handles.c: 
1207         * collection.h: Use SysV semaphores for managing access to the
1208         shared memory - in return for the ludicrous api we get
1209         synchronisation primitives that can be cleaned up by the kernel
1210         even when a process quits unexpectedly.  This removes the
1211         timestamp issues.
1212
1213 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
1214
1215         * handles.c: Always use polling in the waits, since
1216         mono_cond_timedwait can't be interruped by the thread abort signal.
1217
1218 2005-04-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1219
1220         * events.c: calling Set on AutoResetEvent several times has the same
1221         effect as calling it only once if no thread is waiting for it.
1222
1223 2005-04-29  Dick Porter  <dick@ximian.com>
1224
1225         * processes.c (EnumProcesses): Use a GArray instead of a GPtrArray
1226         now it's storing pids not handles, also fixes memory leak caused
1227         by unclear glib documentation.
1228
1229         * sockets.c (WSACleanup): Remove unused variable
1230
1231 2005-04-29  Dick Porter  <dick@ximian.com>
1232
1233         * handles.c (_wapi_handle_check_share_by_pid): For systems that
1234         don't have file descriptor info in /proc check that the original
1235         opener of a file is still there, if a share violation would
1236         otherwise happen.
1237
1238 2005-04-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1239
1240         * handles.c:
1241         * handles-private.h: added _wapi_handle_forecch that loops through all
1242         the handles and call a callback function when a handle of the given
1243         type is found.
1244
1245         * sockets.c: no need to keep open sockets in an array, as we have them 
1246         in the handles structure.
1247
1248         Fixes bug #74755.
1249
1250 2005-04-28  Dick Porter  <dick@ximian.com>
1251
1252         * processes.c: Cope with handles that are only around for as long
1253         as the search is running.  If we're searching for process handles,
1254         check to see if the process is still running and signal it if not.
1255
1256         * handles.c (_wapi_search_handle): Search in the shared space as
1257         well.  Fixed bug 74752.
1258
1259         * mutexes.c:
1260         * handles.c (_wapi_handle_new_from_offset):
1261         _wapi_handle_new_for_existing_ns () was doing exactly the same as
1262         this, so deleted it.
1263
1264 2005-04-26  Dick Porter  <dick@ximian.com>
1265
1266         * handles.c: Fix stupid thinko where if a new shared handle is
1267         created but a collection was needed to free some space, it
1268         returned an error anyway.  Should fix the messages shown in bug
1269         74659.
1270
1271 2005-04-25  Dick Porter  <dick@ximian.com>
1272
1273         * handles.c (_wapi_handle_check_share): Only consider mono
1274         processes when looking to see if a file is still being held open,
1275         while checking share permissions.
1276
1277 2005-04-25  Dick Porter  <dick@ximian.com>
1278
1279         * sockets.c: 
1280         * io.c: 
1281         * wapi-private.h (struct _WapiHandleOps): 
1282         * handles.c (_wapi_handle_unref): When destroying handles, save
1283         the handle data and call the close function only after the array
1284         slot has been cleared.  This prevents race conditions with file
1285         descriptors, fixing bug 74713.
1286
1287         * mutexes.c: Delete the handle close functions, they didn't do
1288         anything anyway
1289
1290         * error.c (_wapi_get_win32_file_error): Add a mapping for EINTR so
1291         the "Unknown error" g_warning doesn't get displayed.
1292
1293 2005-04-25  Dick Porter  <dick@ximian.com>
1294
1295         * wapi-private.h: 
1296         * threads.c: Make thread handles process-private for now to take
1297         some of the space pressure off the shared memory, while I work on
1298         a real fix.
1299
1300 2005-04-21  Dick Porter  <dick@ximian.com>
1301
1302         * handles.c (_wapi_handle_check_share): Make sure there is a "fd"
1303         dir in /proc before blowing away handle info.  Fixes bug 74649.
1304
1305 2005-04-21  Dick Porter  <dick@ximian.com>
1306
1307         * wait.c (WaitForMultipleObjectsEx): Implement special waits
1308
1309         * handles.c (_wapi_handle_wait_signal_poll_share): Don't return a
1310         timeout, just wait briefly for the private signals and let the
1311         waiting thread test again.  This prevents us missing shared
1312         signals.
1313
1314 2005-04-21  Dick Porter  <dick@ximian.com>
1315
1316         * collection.h (_WAPI_HANDLE_COLLECTION_EXPIRED_INTERVAL): Reduce
1317         the time before a slot is considered too old and deleted.  This is
1318         a workaround while I come up with a proper fix.
1319
1320 2005-04-21  Dick Porter  <dick@ximian.com>
1321
1322         * mutexes.c: 
1323         * processes.c: 
1324         * threads.c: 
1325         * handles.c (_wapi_handle_new): Turn assertions into errors.
1326
1327         * collection.c (_wapi_handle_collect): Use symbols not magic
1328         numbers for timeout values
1329
1330 2005-04-19  Dick Porter  <dick@ximian.com>
1331
1332         * mutexes.c: 
1333         * wait.c: 
1334         * handles.c (_wapi_handle_count_signalled_handles)
1335         * handles-private.h (_wapi_handle_shared_lock_handle): Use new
1336         shared handle locks in critical sections.
1337
1338         * handles.c (_wapi_handle_new_for_existing_ns): Reuse old handles
1339         if there is already one there.
1340         
1341         * handles.c (_wapi_handle_ref): It was possible for a process to
1342         exit before getting around to updating shared handle timestamps,
1343         so do it here too.
1344
1345 Tue Apr 19 16:25:47 CEST 2005 Paolo Molaro <lupus@ximian.com>
1346
1347         * threads.c: fix lookup of the thread id in the has table:
1348         always use the id value, not the pointer to the id.
1349
1350 2005-04-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1351
1352         * handles.c: fix handle returned in _wapi_handle_search_handle. Dick
1353         pointed it out.
1354
1355 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1356
1357         * io-layer/sockets.c: FIONBIO with a TRUE argument means we want
1358         non-blocking IO, not the other way around.
1359
1360 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1361
1362         * handles.c:
1363         * io.c:
1364         * handles-private.h: GetFileType wasn't checking if we have memory
1365         allocated for the handle before dereferencing it. Fixes a FileStream
1366         nunit test.
1367
1368 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1369
1370         * handles.c:
1371         * processes.c:
1372         * handles-private.h: we were calling g_renew to expand the handle array,
1373         but that might move the memory and we might have pthread conditions or
1374         mutexes in the original memory area that are being used. Now instead of
1375         expanding an existing array, we just create new ones and keep a list of
1376         them. Access to _wapi_private_handles had to be modified accordingly.
1377
1378 2005-04-15  Dick Porter  <dick@ximian.com>
1379
1380         * collection.c: FreeBSD needs more than PTHREAD_STACK_MIN
1381
1382 2005-04-14  Raja R Harinath  <rharinath@novell.com>
1383
1384         * wapi-private.h: Remove reference to 'daemon-private.h'.
1385
1386 Wed Apr 13 13:12:33 EDT 2005 Paolo Molaro <lupus@ximian.com>
1387
1388         * atomic.h: applied patch from mass@akuma.org (David Waite)
1389         to fix InterlockedExchangeAdd.
1390         Fixed a few other functions, including InterlockedCompareExchange()
1391         which was miscompiled by gcc with optimizations enabled.
1392
1393 2005-04-13  Dick Porter  <dick@ximian.com>
1394
1395         * io.c (share_check): 
1396         * handles.c (_wapi_handle_check_share): Refine the file check so
1397         that sharing violations within the same process don't cause
1398         assertion failures.
1399
1400 2005-04-13  Dick Porter  <dick@ximian.com>
1401
1402         * io.c (FindFirstFile): Fix bugs introduced with the merge (bug
1403         74586)
1404
1405 2005-04-12  Dick Porter  <dick@ximian.com>
1406         
1407         The daemon-less io-layer.  Extensive lowlevel changes in
1408         handles.c, requiring some corresponding changes in other files
1409         calling these functions.  Private_foo structures have been
1410         eliminated.
1411
1412         File descriptor handling differences account for most of the
1413         changes in io.c and sockets.c.
1414
1415         Other highlights:
1416         
1417         * mutexes.c: Named mutexes are now a distinct type.
1418         * atomic.h: Fix a PPC uninitialised variable warning.
1419         * wait.c: Check conditions before waiting on a condition variable.
1420         * processes.c: Handle process fork and wait without a daemon
1421         (though this has the limitation of only being able to wait for
1422         child processes.)
1423
1424 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1425
1426         * io-private.h:
1427         * threads.c:
1428         * threads.h:
1429         * io.c:
1430         * sockets.c:
1431         * sockets.h: removed dead code that deals with async IO.
1432
1433 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
1434
1435         * atomic.c (InterlockedIncrement): Fix fallback implementation of
1436         InterlockedIncrement and InterlockedDecrement. Fixes #74228.
1437
1438 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
1439
1440         * io-layer.h: Add required header files for compiling with VS.NET.
1441
1442 2005-03-17 Miguel de Icaza <miguel@novell.com>
1443
1444         * io.c: don't fail on NFS when there are no more locks available.
1445
1446 2005-03-09  Dick Porter  <dick@ximian.com>
1447
1448         * error.c (_wapi_get_win32_file_error): ENFILE and EMFILE should
1449         map to ERROR_TOO_MANY_OPEN_FILES, not ERROR_NO_MORE_FILES.  Fixes
1450         bug 72671.
1451
1452 2005-03-09  Dick Porter  <dick@ximian.com>
1453
1454         * daemon.c (process_process_fork): Initialise the handle data
1455         before using it in the error case.  This is probably the error
1456         we're working around in the previous change.  Spotted by Taru Jain
1457         <tjain@novell.com> and Hemanth Yamijala <YHemanth@novell.com>.
1458
1459 2005-03-07  Dick Porter  <dick@ximian.com>
1460
1461         * daemon.c: It looks like g_shell_parse_argv() can return
1462         argv[0]=NULL somehow, yet still not give an error.  Make sure we
1463         don't pass NULL to strrchr(), working around a segfault that
1464         showed up on ZLM testing.
1465
1466 2005-03-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1467
1468         * sockets.c: translate EINPROGRESS to EWOULDBLOCK in connect. This is
1469         the expected error code showed by the test case in bug #73053.
1470
1471 2005-02-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1472
1473         * io.c: another leftover.
1474
1475 Fri Feb 18 17:37:29 CET 2005 Paolo Molaro <lupus@ximian.com>
1476
1477         * io.c: fixed logic in checking errno in rev 40815.
1478
1479 Fri Feb 18 16:00:29 CET 2005 Paolo Molaro <lupus@ximian.com>
1480
1481         * threads.c: we don't depend on the GC checking tls
1482         slots anymore.
1483         * processes.c: remove unused ref to GC headers.
1484
1485 Thu Feb 17 19:57:11 CET 2005 Paolo Molaro <lupus@ximian.com>
1486
1487         * io.c: remove _wapi_thread_cur_apc_pending () checks
1488         when the siscall should return immediatly and handle
1489         the case when a syscall is interrupted without
1490         erroring out, but returning a 0 read/write if possible.
1491         Still the cases of read from file need to be handled.
1492
1493 Tue Feb 8 18:28:11 CET 2005 Paolo Molaro <lupus@ximian.com>
1494
1495         * threads.c: make people test with 1 MB stack per thread.
1496
1497 2005-01-17  Dick Porter  <dick@ximian.com>
1498
1499         * timefuncs.h: Make WapiFileTime endian-aware, as it's often
1500         cast to and from 64bit ints.  Fixes bug 71213.
1501
1502 2005-01-11  Dick Porter  <dick@ximian.com>
1503
1504         * error.c (errno_to_WSA): Add EADDRNOTAVAIL error code
1505         translation.
1506
1507 Mon Jan 10 16:15:19 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
1508
1509         * atomic.h: Fix functions on s390.
1510
1511 Mon Jan 10 20:30:19 CET 2005 Paolo Molaro <lupus@ximian.com>
1512
1513         * atomic.h: fix some functions on ppc (tests/interlocked.cs).
1514
1515 2005-01-10  Dick Porter  <dick@ximian.com>
1516
1517         * misc.c (_wapi_calc_timeout): Guard against overflow when
1518         calculating timeouts.  This makes waiting with a large
1519         (Int32.MaxValue) timeout not return immediately.
1520
1521 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
1522
1523         * io.c (io_ops): make this `const' so it is shareable (well, only
1524         really shareable if it is statically linked...)
1525
1526 Mon Dec 20 11:58:33 CET 2004 Paolo Molaro <lupus@ximian.com>
1527
1528         * threads.c, threads.h: add accessor to get the pthread_key_t for
1529         a tls id.
1530
1531 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1532
1533         * io.c: check for the existence of 'dest' and set ERROR_ALREADY_EXISTS
1534         if it exists and is not the same as 'src'.
1535
1536 2004-12-01 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
1537
1538         * atomic.h : Fix InterlockedCompareExchange for s390/s390x.
1539
1540 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1541
1542         * processes.c: unquote the cmd path, allow for ' or " when quoting and
1543         pass the quoted program name to the daemon, otherwise the call to
1544         g_shell_unquote in the daemon will break things up.
1545
1546 2004-10-14  Dick Porter  <dick@ximian.com>
1547
1548         * sockets.c (_wapi_accept): Revert the previous change.  We now
1549         set the accepted socket to have the same blocking status as the
1550         listening socket in managed code.  This follows MS behaviour.
1551         
1552 2004-10-14  Dick Porter  <dick@ximian.com>
1553
1554         * sockets.c (_wapi_accept): On Darwin, make sure a newly
1555         accept()ed socket is blocking.  Fixes bug 67355, patch by
1556         grompf@sublimeintervention.com.
1557
1558 2004-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1559
1560         * system.c: check the number of online processors instead of the
1561         existing ones. Sanitize return value if it's an error.
1562
1563 2004-10-03 Ben Maurer  <bmaurer@ximian.com>
1564
1565         * system.c: Add support for getting the # of cpus.
1566
1567 2004-09-28  Dick Porter  <dick@ximian.com>
1568
1569         * io.c (pipe_close_private): Fix one small typo in the last change
1570         that totally hosed process creation with redirected pipes.
1571
1572 2004-09-24  Dick Porter  <dick@ximian.com>
1573
1574         * wapi-private.h: 
1575         * sockets.c: 
1576         * socket-private.h: 
1577         * io.c: 
1578         * io-private.h: 
1579         * handles-private.h: Cope when a file descriptor is reused while
1580         the handle that thought it owned it is still referenced, instead
1581         of asserting.  Probably fixes bug 66479, though we've been unable
1582         to reproduce it.
1583
1584 2004-09-09  Dick Porter  <dick@ximian.com>
1585
1586         * error.c:
1587         * io.c: Set error codes everywhere.
1588
1589 2004-09-06  Dick Porter  <dick@ximian.com>
1590
1591         * handles.c (_wapi_handle_unref): Reset the private record's type
1592         (CloseHandle): Check for a fd mapping failure, and return FALSE.
1593         (_wapi_handle_process_fork): Fix long-standing bug in checking
1594         handle return values.  Also do the required bookkeeping with the
1595         new process's handles.
1596
1597         * daemon.c: When creating a new process's handles, check whether
1598         the shared space needs to be increased
1599
1600 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
1601
1602         * shared.c (_wapi_shm_file): Fix leaking of filename.
1603
1604 2004-08-19  Dick Porter  <dick@ximian.com>
1605
1606         * handles.c (_wapi_handle_count_signalled_handles): Fix thinko
1607         introduced with the fd offset stuff: unlock handles properly when
1608         backing off.  Fixes the monologue hang at exit.
1609
1610 2004-08-18  Dick Porter  <dick@ximian.com>
1611
1612         * sockets.c: 
1613         * io.c: Check that new fds fit in the table, return error if not
1614
1615         * daemon.c (_wapi_daemon_main): 
1616         * handles.c (shared_init): Have all processes agree on a size for
1617         the fd table.
1618
1619 2004-08-17  Dick Porter  <dick@ximian.com>
1620
1621         * daemon.c (process_new): 
1622         * handles.c (_wapi_handle_new_internal): Cope when the space
1623         reserved for file descriptors is larger than the shared segment
1624         size.  Fixes the crash reported when running mono under gdb on
1625         macosx.
1626
1627 2004-08-16  Dick Porter  <dick@ximian.com>
1628
1629         * sockets.c:
1630         * io.c:
1631         * handles-private.h (_wapi_handle_fd_offset_to_handle): Improve
1632         error checking with passed-in file descriptors.
1633
1634 2004-08-11  Dick Porter  <dick@ximian.com>
1635
1636         * sockets.c: 
1637         * io.c: Returned handle values are the file descriptor the handle
1638         encapsulates
1639
1640         * handles.c: 
1641         * handles-private.h: 
1642         * daemon.c: Reserve the range of handles that can have the same
1643         values as file descriptors.  These won't be used, but the values
1644         will be used as file, console, pipe or socket handles.  The fd to
1645         handle mapping is done internally and is invisible to users.
1646         Fixes bug 61828.
1647
1648         * wapi-private.h (_WAPI_HANDLE_VERSION): Increment, because we now
1649         reserve a chunk of handle space.
1650
1651 2004-08-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
1652
1653         * atomic.h: add support for 64-bit S/390
1654
1655 2004-07-22  Dick Porter  <dick@ximian.com>
1656
1657         * timed-thread.c: 
1658         * threads.c: Move the destruction of the internal thread data to
1659         after the thread has been joined.  Fixes bug 61418.
1660
1661 2004-07-14  Dick Porter  <dick@ximian.com>
1662
1663         * wait.c (test_and_own): When not waiting for all handles to
1664         become signalled, only own and return the lowest.  All the
1665         documentation suggests that the old way was correct, but
1666         experimentation shows it actually works like this.  Patch by
1667         Sébastien Robitaille
1668         (sebastien.robitaille@croesus.com), fixes bug 61511.
1669
1670 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
1671
1672         * threads.c: register roots for gc
1673
1674 2004-07-08  Dick Porter  <dick@ximian.com>
1675
1676         * io.c (file_seek): If there is a high 32bit offset part, make
1677         sure the low part isn't sign-extended.  Set error codes when
1678         returning failure.  Fixes bug 61131.
1679
1680 2004-07-06  Dick Porter  <dick@ximian.com>
1681
1682         * io.c (file_setfiletime): Check for underflow when converting to
1683         time_t values.  Set error codes when returning failure.  Fixes bug
1684         60970.
1685
1686 2004-07-05  Dick Porter  <dick@ximian.com>
1687
1688         * mutexes.c (mutex_ops_init): Make the named mutex mutex sharable.
1689
1690         * daemon.c (unref_handle): Only destroy a handle if all processes
1691         have released it, not just the current one.  Fixes bug 60887.
1692
1693 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
1694
1695         * mono-mutex.h atomic.h: Add G_GNUC_UNUSED to static inline functions
1696         to prevent warnings.
1697
1698 2004-06-24  Dick Porter  <dick@ximian.com>
1699
1700         * mutexes.c: Indicate when a named mutex was reused
1701
1702 2004-06-24  Dick Porter  <dick@ximian.com>
1703
1704         * threads.c (SuspendThread): 
1705         * timed-thread.c (_wapi_timed_thread_suspend): Wrap sem_wait in a
1706         while loop.  See bug 58161.
1707
1708 Wed Jun 23 23:29:04 CEST 2004 Paolo Molaro <lupus@ximian.com>
1709
1710         * io.c: don't use sharemode for on-disk file permissions: it's used
1711         for shared access to the open file.
1712
1713 2004-06-22  Dick Porter  <dick@ximian.com>
1714
1715         * events.c (CreateEvent): When creating an auto-reset event that
1716         is initially owned, make sure the set count starts at 1.
1717
1718 2004-06-18  Dick Porter  <dick@ximian.com>
1719
1720         * event-private.h:
1721         * events.c: Auto-reset events need to release one thread for each
1722         time SetEvent() is called.  Fixes bug 41292.
1723
1724         * threads.h:
1725         * mutex-private.h:
1726         * mutexes.c: Scan for mutexes that are still locked by a thread
1727         when it exits.  Fixes the MS demo app linked by bug 41292.
1728
1729         * wait.c (test_and_own): Make sure a handle is signalled before it
1730         is owned.
1731
1732 2004-06-16  Dick Porter  <dick@ximian.com>
1733
1734         * timed-thread.c: Call the thread cleanup exit routine before taking
1735         the join mutex, because this could deadlock if another thread tries
1736         to join in the meantime.  This fixes the hang-at-exit problem seen
1737         on macos.
1738
1739 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
1740
1741         * threads.c: Implemented SleepEx.
1742         * threads.h: Fixed SleepEx signature.
1743
1744 2004-06-03  Miguel de Icaza  <miguel@ximian.com>
1745
1746         * threads.c: When running under valgrind, do not allocate too much
1747         stack, as Valgrind default is 1 meg.
1748
1749 2004-05-27  Dick Porter  <dick@ximian.com>
1750
1751         * io.h:
1752         * io.c: Implemented LockFile() and UnlockFile()
1753
1754 2004-05-21  Dick Porter  <dick@ximian.com>
1755
1756         * io.c (CreateFile): Check for existing share modes when opening
1757         a file.
1758
1759         * handles.c: 
1760         * handles-private.h: 
1761         * daemon-messages.h: 
1762         * daemon.c: Maintain a hash of file share modes, keying on device
1763         and inode (to cope with symlinks.)
1764
1765 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
1766
1767         * daemon-messages.c: Retry if the communication with the daemon is
1768           interrupted by a signal.
1769         * io.c, sockets.c: Check for EINTR in every syscall that can be interrumped. 
1770           Only return an error in this case if there is something in the apc queue
1771           (which means that it is an interruption requested by the "user").
1772         * processes.c: Use WaitForSingleObjectEx. No need to pass "alertable" as
1773           true since the wait is small.
1774         * shared.c: Retry write calls when interrumped by a signal.
1775         * timed-thread.h, timed-thread.c: added _wapi_thread_apc_pending, which
1776           returns TRUE if there are pending asynchronous calls (APC) for the
1777           provided thread. Also added _wapi_thread_dispatch_apc_queue which calls
1778           the enqueued APCs. Defined a new struct ApcInfo that holds information
1779           about an enqueued APC.
1780         * thread-private.h, threads.c: Implemented QueueUserAPC (which does the same
1781           as in win32),_wapi_thread_apc_pending and _wapi_thread_dispatch_apc_queue. 
1782           These last two methods call the corresponding apc methods in 
1783           thread-private using the provided thread handle.
1784         * threads.h: Added QueueUserAPC.
1785         * uglify.h: Added WapiApcProc (needed by QueueUserAPC).
1786         * wait.c, wait.h: Changed WaitForSingleObject to WaitForSingleObjectEx, and
1787           WaitForMultipleObjects to WaitForMultipleObjectsEx. Implemented support
1788           for APCs in those two methods and also in SleepEx.
1789
1790 2004-05-17  Dick Porter  <dick@ximian.com>
1791
1792         * io.c (CopyFile): Speed up.  Fixes bug 57859.
1793
1794 2004-05-13  Dick Porter  <dick@ximian.com>
1795         * mono-mutex.c (mono_mutex_unlock): Return EPERM when the current
1796         thread doesn't own the mutex, rather than assert()ing.
1797
1798 2004-05-11  Dick Porter  <dick@ximian.com>
1799
1800         * shared.c (_wapi_shm_attach): Cope when a previous daemon startup
1801         attempt failed, leaving shared files that look like a daemon is
1802         still starting.
1803
1804 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1805
1806         * io.c:
1807         (SetFileAttributes): don't the the exec bit if the corresponding read
1808         bit is not set.
1809
1810 2004-05-10  Zoltan Varga  <vargaz@freemail.hu>
1811
1812         * io.c (FindFirstFile): Fix invalid free.
1813
1814 2004-05-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1815
1816         * io.c: translate from GFileError to errno codes and don't free
1817         variables right after calling mono_io_scandir, as we may overwrite
1818         errno value.
1819
1820 2004-05-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1821
1822         * io.c: g_dir_open return ENOENT for directories on which we don't have
1823         read/execute permission, while returning EPERM for anything below those.
1824         So, change ENOENT by EPERM if the directory exists.
1825
1826 2004-05-07  Dick Porter  <dick@ximian.com>
1827
1828         * io.c (SetFileAttributes): Don't have failed chmod()s cause a
1829         "file not found" error.  Fixes bug 54032.
1830         
1831 2004-05-07  Dick Porter  <dick@ximian.com>
1832
1833         * io.c (FindFirstFile): Comment out a windows-compatibility check
1834         that breaks when directories have metachars in their names.
1835         Workaround for bug 58116.
1836
1837 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1838
1839         * io.c: fixed for FindFirstFile for empty directories. Closes
1840         bug #58147.
1841
1842 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1843
1844         * processes.c: set the start time for the current process. Fixes bug
1845         #58109.
1846
1847 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1848
1849         * io-private.h: 'namelist' is now a gchar ** in _WapiHandlePrivate_find.
1850         * io.c: implemented scandir using glib functions.
1851
1852 2004-05-04  Dick Porter  <dick@ximian.com>
1853
1854         * daemon.c (read_message): Return FALSE on error so the GSource
1855         callback itself can return FALSE.  Cures the infinite loop poll()
1856         warning on MacosX.
1857         * shared.c: Fix some daemon startup race conditions.
1858
1859 2004-04-29  Miguel de Icaza  <miguel@ximian.com>
1860
1861         * io.c (CopyFile): Use 32k buffers to copy the file instead of 2k,
1862         use the stack, do not use dynamic memory.
1863
1864 2004-04-29  Zoltan Varga  <vargaz@freemail.hu>
1865
1866         * io.c: Add scandir implementation for platforms which do not have
1867         it, like solaris.
1868
1869 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1870
1871         * io.[ch]: implemented GetLogicalDriveStrings.
1872
1873 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1874
1875         * io.c:
1876         * sockets.c: use the field name from configure when accessing sigval
1877         pointer field. Makes this work on the Mac.
1878
1879 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
1880
1881         * atomic.c: (InterlockedExchange) fix typo for
1882         mutex name
1883
1884 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1885
1886         * io.c:
1887         * sockets.c: added check for sys/aio.h.
1888
1889 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1890
1891         * error.[ch]: added _wapi_get_win32_file_error...
1892         * io.c: ... which was _wapi_get_win32_error here.
1893         * sockets.c: rename the function calls here too.
1894
1895 2004-04-28  Dick Porter  <dick@ximian.com>
1896
1897         * daemon-messages.c: Avoid a deadlock when a thread is killed while
1898         waiting for the daemon by using a recursive mutex.  Helps bug 56699.
1899
1900 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1901
1902         * io.c: fixed leak in async_notifier().
1903
1904         * sockets.[ch]: added AIO support for sockets and fixed WSAIoctl
1905         declaration.
1906
1907         * threads.c: removed old comment.
1908
1909 2004-04-26  David Waite  <mass@akuma.org>
1910
1911         * daemon-messages.h:
1912         * daemon-private.h
1913         * error.h:
1914         * io.h:
1915         * processes.h:
1916         * shared.h:
1917         * thread-private.h:
1918         * wapi-private.h: remove comma from end of enumeration declarations
1919         * status.h: cast unsigned int types to int for enum assignment
1920
1921 2004-04-26 David Waite <mass@akuma.org>
1922
1923         * io.c:
1924         * timefuncs.c: declare 64-bit constants as long long types (i.e.
1925         10ULL)
1926
1927 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1928
1929         * socket-wrappers.h: _wapi_socket == WSASocket now. Added
1930         WSA_FLAG_OVERLAPPED.
1931
1932         * sockets.c: new unused parameters for _wapi_socket.
1933
1934 2004-04-22  Miguel de Icaza  <miguel@ximian.com>
1935
1936         * timed-thread.c: Replace sem_init with MONO_SEM_INIT to handle
1937         the fact that MacOS X is a piece of junk (sem_init is *defined* in
1938         the libc, but they return `not implemented'). 
1939
1940 2004-04-22  Dick Porter  <dick@ximian.com>
1941
1942         * handles.c: 
1943         * handles-private.h: Reference the handle when it is locked, so
1944         that another thread can't blow it away while we're waiting for it
1945         to become signalled.
1946         
1947         * wait.c: 
1948         * timed-thread.c: 
1949         * threads.c: 
1950         * sockets.c: 
1951         * semaphores.c: 
1952         * mutexes.c: 
1953         * mono-mutex.c: 
1954         * io.c: 
1955         * handles.c: 
1956         * handles-private.h: 
1957         * events.c: 
1958         * error.c: 
1959         * daemon-messages.c: 
1960         * critical-sections.c: 
1961         * atomic.c: Added pthreads cleanup handlers and error asserts
1962
1963         * shared.c: 
1964         * handles.c: Fixed the gcc "variable might be used uninitialised"
1965         warnings.  They can't happen, but gcc doesn't know that
1966         g_assert()s don't return.
1967
1968         Fixed the declaration of _wapi_handle_process_kill() so that it
1969         expects the correct type for the pid.
1970         
1971         * threads.c: Removed the TLS_PTHREAD_MUTEX style locking that
1972         hasn't been used in ages and just made the code more complex.
1973
1974 2004-04-17  Zoltan Varga  <vargaz@freemail.hu>
1975
1976         * processes.c: Include <signal.h> for SIGKILL and SIGILL + fix some
1977         warnings. Fixes #57168.
1978
1979 2004-04-16  Dick Porter  <dick@ximian.com>
1980
1981         * threads.c (Sleep): Using div(3) with a negative (when signed)
1982         numerator causes the quotient to be 0 and the remainder to be the
1983         numerator.  This feeds a small negative value to nanosleep(3),
1984         which will return immediately and cause a busy wait.  Fixes bug
1985         56351.
1986
1987 2004-04-15  Dick Porter  <dick@ximian.com>
1988
1989         * io-private.h:
1990         * io.c: Rewrite FindFirstFile and FindNextFile using scandir(3)
1991         and fnmatch(3) instead of glob(3).  glob() can't cope with being
1992         given filenames containing metachars.  This fixes bug 40557.
1993
1994 2004-04-14  Bernie Solomon  <bernard@ugsolutions.com>
1995
1996         * security.c: #warning is a GCC-ism
1997
1998 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
1999
2000         * security.c: Removed GetUserName as glib g_get_user_name does a
2001         better (portability) job. Added ImpersonateLoggedOnUser and
2002         RevertToSelf.
2003
2004 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2005
2006         * mono-mutex.h: move pthread_mutex_timedlock declaration to...
2007         * mono-mutex.c: ...here. It was causing a warning that prevented
2008         libgdiplus compilation.
2009
2010 2004-04-04  Miguel de Icaza  <miguel@ximian.com>
2011
2012         * security.c (GetUserName): Make it work on MacOS X
2013
2014 2004-04-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2015
2016         * security.c: use getpwuid_r if available. This one is thread-safe.
2017
2018 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
2019
2020         * Makefile.am: Added security.c|h.
2021         * security.c: New file for security related functions. Added function
2022         GetUserName to fix #56144.
2023         * security.h: New. Header file for security.c
2024         * wapi.h: Added include for security.h
2025
2026 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2027
2028         * daemon-messages.h: added kill structs.
2029
2030         * daemon.c: implemented process_process_kill.
2031         * handles-private.h:  define process_process_kill.
2032         * handles.c: implemented _wapi_handle_process_kill.
2033         * processes.[ch]: implemented TerminateProcess.
2034
2035 2004-03-25  Bernie Solomon  <bernard@ugsolutions.com>
2036
2037         * daemon.c (rem_fd): On solaris you seem to get an
2038         error even after removing the input source so don't
2039         try and rem_fd it twice.
2040
2041 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
2042
2043         * daemon.c: in process_post_mortem, If the child terminated due to the 
2044         receipt of a signal, the exit status must be based on WTERMSIG, since 
2045         WEXITSTATUS returns 0 in this case.
2046
2047 2004-03-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2048
2049         * daemon.c: turned a warning into a DEBUG statement. Now we may hit it.
2050
2051 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2052
2053         * daemon.c: only call getdtablesize () once.
2054         * processes.c: wait 500 ms to check if execve failed and throw the same
2055         exception as MS on failure. Fixes bug #32809.
2056
2057 2004-03-17  Bernie Solomon  <bernard@ugsolutions.com>
2058
2059         * io.c (async_notifier): use "union sigval" rather
2060         than sigval_t as Solaris doesn't have sigval_t
2061         (which isn't in IEEE 1003.1 either).
2062
2063 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2064
2065         * io.c: added debug stuff and removed a few redundant lines in
2066         file_write.
2067
2068 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2069
2070         * io-private.h: added new fields for file structure. Declare
2071         _wapi_io_add_callback.
2072
2073         * io.c: added _wapi_get_win32_error, support aio_read/write in
2074         file_read/write. Implemented _wapi_io_add_callback, which is where
2075         BindHandle ends up.
2076         
2077         * io.h: added new fields for WapiOverlapped and typedef for the
2078         callback.
2079
2080         * processes.c: fixed off-by-one bug when handling environment variables 
2081         passed in.
2082
2083         * threads.[ch]: implemented BindIoCompletionCallback.
2084
2085         * uglify.h: added typedef for LPOVERLAPPED_COMPLETION_ROUTINE.
2086
2087 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
2088
2089         * socket-wrappers.h: Remove extra semicolon.
2090
2091 2004-03-03  Dave Camp  <dave@ximian.com>
2092
2093         * daemon.c: (add_fd), (fd_activity), (_wapi_daemon_main):
2094         Use a new main context.
2095
2096 2004-03-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2097
2098         * io.c:
2099         (GetFileAttributes): set the error depending on errno instead of
2100         setting ERROR_FILE_NOT_FOUND always. See bug #55160.
2101
2102 2004-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2103
2104         * io.c:
2105         (CopyFile): free the buffer on error.
2106         * sockets.c:
2107         (WSAIoctl): free the buffer on error.
2108
2109 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2110
2111         * error.c: fixed mapping for EPROTONOSUPPORT and ESOCKTNOSUPPORT.
2112
2113         * sockets.[ch]: retry creating the socket for AF_INET, SOCK_RAW
2114         using IP protocol with IP over IP. Implemented WSAIoctl UNIX-style.
2115
2116 2004-01-27  Bernie Solomon  <bernard@ugsolutions.com>
2117
2118         * shared.c (_wapi_shm_file): add hostname
2119         to shared data file names to handle NFS mounted
2120         .wapi directories.
2121
2122 Mon Jan 26 16:15:03 CET 2004 Paolo Molaro <lupus@ximian.com>
2123
2124         * sockets.h: remove obsolete soklen_t typedef.
2125
2126 Fri Jan 23 21:07:02 CET 2004 Paolo Molaro <lupus@ximian.com>
2127
2128         * socket-wrappers.h, sockets.h, sockets.c, Makefile.am: move socket
2129         wrappers to its own non-installed header file.
2130
2131 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2132
2133         * io.c:
2134         (FindFirstFile): unlock the handle if FindNextFile fails.
2135         (FindNextFile): g_free a couple of pointers before retrying.
2136
2137         * wait.c:
2138         (WaitForMultipleObjects): if only one handle provided, use
2139         WaitForSingleObject.
2140
2141 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
2142
2143         * handles-private.h: (_wapi_handle_type) check
2144         for segment in range before using it
2145
2146 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
2147
2148         * thread-private.h: _wapi_thread_ops is now const
2149         must match .c file.
2150
2151 Mon Dec 22 18:29:03 CET 2003 Paolo Molaro <lupus@ximian.com>
2152
2153         * threads.c, timed-thread.c, timed-thread.h: use mach
2154         semaphores on Darwin (MacOSX) since the posix ones
2155         are mostly broken there (threads are not created suspended
2156         and they can start executing before they are fully initialized
2157         like in tests/thread-static.cs).
2158
2159 Mon Dec 22 17:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
2160
2161         * atomic.h: ppc fixes.
2162
2163 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
2164
2165         * handles.c: remove my bad use of MONO_ZERO_ARRAY_LENGTH
2166         in HDRSIZE 
2167
2168 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
2169
2170         * shared.c: (_wapi_shm_open) make scratch file
2171         not have to immediately regrow to avoid remaps
2172         (HPUX can't cope with these).
2173         (_wapi_shm_attach) use actual size of file
2174         to set scratch data_len for the creating process.
2175
2176         * handles.c: (_wapi_handle_new_internal) make
2177         sure mutex & cond var are initialized even for
2178         non process shared ones. 
2179         (_wapi_handle_unref) always call destroy 
2180         routines on mutex & cond var
2181
2182 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
2183
2184         * daemon.c: change channel data structure so
2185         input sources are removed from glib event loop
2186         properly. xsp works better on Solaris and 
2187         fixes #51278
2188
2189 2003-12-12  Bernie Solomon  <bernard@ugsolutions.com>
2190
2191         * wapi-private.h: Replace G_GNUC_PRETTY_FUNCTION
2192         definition with file & line number for non-GCC
2193         compiles.
2194
2195 2003-12-08  Bernie Solomon  <bernard@ugsolutions.com>
2196
2197         * Makefile.am: make sure hppa_atomic.s is in distribution
2198
2199 2003-12-01  Dick Porter  <dick@ximian.com>
2200
2201         * wapi-private.h: 
2202         * mutexes.c (CreateMutex): 
2203         * mutex-private.h (struct _WapiHandle_mutex): 
2204         * handles.c: Look up certain handle types by name, in a shared
2205         namespace.  Currently only mutex handles have this implemented.
2206         Fixes bug 51089.
2207
2208         * semaphores.c (CreateSemaphore): 
2209         * events.c (CreateEvent): Fix signature
2210
2211 2003-11-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2212
2213         * io.c: don't call g_free before testing errno as it may modify it.
2214         If the path exists, return an error if it's not a directory. Fixes
2215         bug #50753.
2216
2217 2003-11-20  Dick Porter  <dick@ximian.com>
2218
2219         * io.c: Missed a little-endian UTF16 conversion.  Patch from
2220         Jeroen Zwartepoorte (Jeroen@xs4all.nl), fixes bug 51065.
2221
2222 2003-10-29  Dick Porter  <dick@ximian.com>
2223
2224         * io.c (MoveFile): If the move crosses filesystems, try and fall
2225         back to copy and delete.  Patch from Jörg Rosenkranz
2226         (JoergR@voelcker.com), fixes bug 50298.
2227
2228 2003-10-28  Dick Porter  <dick@ximian.com>
2229
2230         * io.c: Use the new encoding conversion to cope with non-utf8
2231         locales in filenames.
2232
2233         * processes.c: Ditto for process arguments.
2234
2235 Tue Oct 21 12:01:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
2236
2237         * atomic.h: some ppc inline asm fixes (incorrect use of labels, 
2238         incorrect register constraints, incorrect clobber lists).
2239
2240 2003-10-13  Bernie Solomon  <bernard@ugsolutions.com>
2241
2242         * Makefile.am hppa_atomic.s: add HP 64bit
2243         implementation of atomic ops
2244
2245 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
2246
2247         * threads.c (CreateThread): Wrap pthread_attr_setstacksize call in
2248         a conditional for platforms that don't have it.
2249
2250 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
2251
2252         * threads.c: (CreateThread) use stacksize argument
2253         if non-zero - change default for 64 bits to 4Mb
2254
2255 2003-09-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2256
2257         * sockets.c: set last error when socket creation fails. This shed some
2258         light on bug #49015.
2259
2260 2003-09-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2261
2262         * processes.c: fixed bug #48973: we only change \ by / for the argument
2263         to be used as command.
2264         When getting the program name from the args, don't let the space between
2265         them in the args.
2266
2267 2003-09-24  Bernie Solomon <bernard@ugsolutions.com>
2268
2269         * atomic.h atomic.c: fix sparc so lock is
2270         global, increment does so and it compiles under Sun compiler.
2271
2272 2003-09-22  Bernie Solomon <bernard@ugsolutions.com>
2273
2274         * handles.c: include <string.h> directly as may
2275         not be nested in <sys/un.h> like Linux
2276
2277 2003-09-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2278
2279         * io.c:
2280         (DeleteFile): call SetLastError on failure. Fix by
2281         richard.torkar@htu.se (Richard Torkar). Closes bug #48222.
2282
2283 2003-09-15  Lluis Sanchez Gual  <lluis@ximian.com>
2284
2285         * daemon.c: In compare_process(), discard handles already signalled.
2286
2287 2003-09-02  Dick Porter  <dick@ximian.com>
2288
2289         * io.c: Work around glib brain-dead assumptions about utf8-encoded
2290         filenames.  Fixes bug 30781.
2291
2292 2003-08-28  Dick Porter  <dick@ximian.com>
2293
2294         * critical-sections.c:  Patch from Bernie Solomon
2295         <bernard@ugsolutions.com> to emit a warning if locking a critical
2296         section fails.
2297
2298 2003-07-23  Dick Porter  <dick@ximian.com>
2299
2300         * shared.c:
2301         * daemon.c (maybe_exit): Avoid the race condition when the daemon is
2302         closing but another client comes along when the shared data is still
2303         visible.  Should fix bugs 33671 and 35213.
2304
2305 2003-07-23  Dick Porter  <dick@ximian.com>
2306
2307         * handles.c:  Initialise handle mutex and cond.  Fix by
2308         Bernie Solomon <bernard@ugsolutions.com>
2309
2310 2003-07-15  Dick Porter  <dick@ximian.com>
2311
2312         * timed-thread.c (timed_thread_start_routine): Fix virtual memory
2313         leak when threads quit.  Fixes bug 44067.
2314
2315 Wed Jun 18 19:08:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
2316
2317         * io.c: never add write permission for group or others in
2318         SetFileAttributes ().
2319
2320 2003-06-17  Dick Porter  <dick@ximian.com>
2321
2322         * io.c (SetFileAttributes): Implement the ReadOnly attribute, and
2323         ignore the unsupported ones ("fixes" bug 44977).
2324
2325 2003-06-17  Lluis Sanchez Gual  <lluis@ximian.com>
2326
2327         * misc.c: fix bug in _wapi_calc_timeout. It gave wrong values for
2328           high ms values (there was an overflow).
2329
2330 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
2331
2332         * system.h (struct _WapiSystemInfo ): Fix warnings when using gcc-3.3.
2333
2334 2003-06-11  Dick Porter  <dick@ximian.com>
2335
2336         * shared.c: Fix shared directory creation.  Patch from
2337         Pablo Baena <pbaena@uol.com.ar>
2338
2339 2003-06-10  Dick Porter  <dick@ximian.com>
2340
2341         * atomic.c: Delete the useless compile warning
2342
2343 2003-06-09  Dick Porter  <dick@ximian.com>
2344
2345         * daemon.c: Lookup env as a string array.  Fixes bug 44289.  Also
2346         make setting the process handle value in the environment actually
2347         work.
2348
2349         * processes.c: Pretty up the process name, if it happens to be
2350         "mono" such as when another mono process forks "mono foo.exe"
2351
2352 2003-06-05  Dick Porter  <dick@ximian.com>
2353
2354         * processes.c (process_set_current): Don't do an expensive handle
2355         search at application startup, check the environment to see if the
2356         process handle has already been created.
2357
2358         * io.c: Don't do an expensive handle search when creating stdin,
2359         stdout and stderr handles, just create them all the first time one
2360         is requested.
2361
2362         * wapi-private.h:
2363         * shared.c:
2364         * shared.h:
2365         * handles.c:
2366         * handles-private.h:
2367         * daemon-messages.h:
2368         * daemon-private.h:
2369         * daemon.c: Support for "unlimited" number of handles and scratch
2370         data.
2371
2372         Speed up application startup by passing process handle in the
2373         environment, rather than let the app scan all handles (which gets
2374         really slow when there are more than a few thousand to check.)
2375
2376         Initialise some structs passed to syscalls, noticed by valgrind.
2377         
2378
2379 2003-05-20  Dick Porter  <dick@ximian.com>
2380
2381         * io.c (FindFirstFile): Include . files in the glob.  Fixes bug
2382         43229.
2383
2384 2003-05-19  Dick Porter  <dick@ximian.com>
2385
2386         * threads.c: Set the new thread's stack size to 2M.  Fix needed
2387         for BSD, reported by Martin Dvorak <md@9ll.cz>
2388
2389 2003-05-16  Dick Porter  <dick@ximian.com>
2390
2391         * io.h:
2392         * io.c: Implement GetTempPath()
2393
2394 2003-05-16  Dick Porter  <dick@ximian.com>
2395
2396         * processes.c (CreateProcess): Set some error codes
2397
2398 2003-05-12  Dick Porter  <dick@ximian.com>
2399
2400         * misc.c (_wapi_calc_timeout): Cope with overflowing tv_nsec.
2401         Patch from Martin Dvorak <mdvorak@ninell.cz>.
2402
2403 2003-05-10  Dick Porter  <dick@ximian.com>
2404
2405         * io.c (CopyFile): Copy file mode as well as file data.  Based on
2406         suggestion by Giuseppe Greco <giuseppe.greco@agamura.com>, bug
2407         42706.
2408
2409 2003-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2410
2411         * handles.c: don't call GC_gcollect when creating new handles.
2412
2413 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2414
2415         * handles.c: added some debugging code. Call GC_gcollect
2416         before creating a new handle. It makes Lupus' test run smoother and
2417         faster (from 62 to 83 request per second). Notice that calling
2418         GC_finalizer_notifier if needed (GC_should_invoke_finalizer ()) does
2419         not improve nor degrade the performance, so i don't do it.
2420
2421 2003-05-02  Dick Porter  <dick@ximian.com>
2422
2423         * sockets.c: Rearrange closesocket() and socket_close_private(),
2424         and remember to unref the handle, so we don't leak socket handles.
2425         Fix from Pelle Johnsen <pelle.johnsen@mail.dk>
2426
2427 2003-04-11  Dick Porter  <dick@ximian.com>
2428
2429         * atomic.h: ARM atomic operations by Malte Hildingson
2430         <tds00mahi@tellus.thn.htu.se>
2431
2432 Tue Apr 8 11:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
2433
2434         * atomic.h: fix macosx build by "Urs C. Muff" <umuff@quark.com>.
2435
2436 2003-04-03  Martin Baulig  <martin@ximian.com>
2437
2438         The following change is conditional to `WITH_INCLUDED_LIBGC'
2439         which is not yet enabled by default.
2440
2441         * threads.c (SuspendThread, ResumeThread): Fully implemented this.
2442         (gc_init): New static function; install a signal handler for
2443         SIGPWR which is used to suspend threads.  [FIXME: it SIGPWR
2444         doesn't exist on all Unix systems, we need to find another
2445         signal].
2446         (mono_wapi_push_thread_stack): New public function.  Tells the
2447         garbage collector about the current stack pointer of a suspended
2448         thread.
2449
2450 2003-04-03  Martin Baulig  <martin@ximian.com>
2451
2452         * timed-thread.h (TimedThread): Added `suspended_sem',
2453         `suspend_count' and `stack_ptr'.
2454
2455 2003-03-28  Dick Porter  <dick@ximian.com>
2456
2457         * atomic.h: PPC support gratiously donated to the public domain
2458         by John Duncan <jddst19@mac.com>
2459
2460 2003-03-20  Dick Porter  <dick@ximian.com>
2461
2462         * sockets.c (_wapi_connect): If connect() fails with EACCES, try
2463         setting SO_BROADCAST and connecting again.  Fixes bug 39178.
2464
2465 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2466
2467         * processes.c: included Jerome Laban's patch and call SetLastError when
2468         the executable is not found.
2469
2470 2003-03-03  Dick Porter  <dick@ximian.com>
2471
2472         * io.c (CreateFile): Try opening directories readonly, so that
2473         timestamps can be adjusted.  Patch by Elan Feingold
2474         <efeingold@mn.rr.com>.
2475
2476 2003-02-25  Dick Porter  <dick@ximian.com>
2477
2478         * shared.c (_wapi_shm_attach): Return a failure code on system
2479         call errors, rather than exiting.
2480
2481 2003-02-21  Dick Porter  <dick@ximian.com>
2482
2483         * processes.c (GetCurrentProcessId): Use the current process
2484         handle to return the process ID, as getpid() is unreliable
2485         (linuxthreads gives each thread a different pid).  Fixes bug
2486         37550.
2487
2488 2003-02-21  Dick Porter  <dick@ximian.com>
2489
2490         * io.c (FindNextFile): Skip over dangling symlinks.  Fixes bug
2491         34076.
2492
2493 2003-02-11  Dick Porter  <dick@ximian.com>
2494
2495         * timefuncs.h: 
2496         * timefuncs.c: Added GetTickCount()
2497
2498 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2499
2500         * error.c: added WSA_EHOSTUNREACH mapping.
2501
2502 2003-01-26  Miguel de Icaza  <miguel@ximian.com>
2503
2504         * io.c (SetFileAttributes): This routine is not currently
2505         implemented for the general case, but I added a special case to
2506         set the executable bit on Linux.
2507
2508 Wed Jan 15 15:55:40 CET 2003 Paolo Molaro <lupus@ximian.com>
2509
2510         * sockets.h, daemon.c, io.c: compilation fixes on MacOSX.
2511
2512 2003-01-08  Dick Porter  <dick@ximian.com>
2513
2514         * sockets.c: Fixed setting blocking mode to true (fixes bug 36388)
2515
2516 2002-12-11  Juli Mallett  <jmallett@FreeBSD.org>
2517
2518         * daemon.c, handles-private.h, handles.c, wapi-private.h:
2519         Check for an implementation which says it supports
2520         _POSIX_THREAD_PROCESS_SHARED, rather than just one that
2521         defines the symbol.  Defined but with a value of -1 still
2522         means that it is unsupported.
2523
2524 2002-12-08  Martin Baulig  <martin@ximian.com>
2525
2526         * handles.c (_wapi_handle_new): Create new non-shared handles with
2527         an initial refcount of 1, not 0.
2528
2529 2002-11-22  Dietmar Maurer  <dietmar@ximian.com>
2530
2531         * threads.c (TlsGetValue): removed unnecessary mutex
2532
2533 2002-11-20  Dick Porter  <dick@ximian.com>
2534
2535         * timed-thread.c (_wapi_timed_thread_attach): Attached threads
2536         need to store their data structure too.
2537
2538         * threads.c: Make sure the threading data is initialised wherever
2539         it is needed
2540
2541 2002-11-15  Dick Porter  <dick@ximian.com>
2542
2543         * timed-thread.c: Removed unneeded parameters in
2544         _wapi_timed_thread_attach().
2545
2546         * threads.c: Renamed AttachThread() to make it not look like
2547         external API.  Removed unneeded parameters.
2548
2549 2002-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2550
2551         * error.[ch]: added errno_to_WSA (). It displays a warning and return
2552         WSASYSCALLFAILURE if there is no error mapping for the given errno,
2553
2554         * sockets.c: use errno_to_WSA and fixed display of warning for h_errno.
2555
2556 2002-10-31  Dick Porter  <dick@ximian.com>
2557
2558         * io.h: 
2559         * io.c: Define and use INVALID_FILE_ATTRIBUTES
2560
2561 2002-10-07  Dick Porter  <dick@ximian.com>
2562
2563         * timefuncs.c:
2564         * daemon.c: Use a more accurate time source for process start and
2565         end times.
2566
2567 2002-10-03  Dick Porter  <dick@ximian.com>
2568
2569         * daemon.c:
2570         * handles.c:
2571         * threads.c:  Fixes for freebsd.  Make sure that mutex and condition
2572         creation and deletion happen in the process that owns them, when
2573         POSIX shared thread objects aren't supported.  This breaks on
2574         freebsd, as pthread_t is a pointer to data.
2575
2576 2002-10-02  Dick Porter  <dick@ximian.com>
2577
2578         * shared.c: Use mmap() instead of sysv shm for the shared data.
2579
2580         * wapi-private.h (_WAPI_HANDLE_VERSION): Reset back to 0, for the
2581         new system
2582
2583         * daemon-private.h: 
2584         * daemon.c: mmap()ed regions survive fork, so just pass the
2585         pointer to _wapi_daemon_main instead of mapping it again.
2586
2587 2002-10-01  Dick Porter  <dick@ximian.com>
2588
2589         * timed-thread.c: Kludge for CREATE_SUSPENDED thread creation.
2590         Unfortunately libgc uses the same thread suspend technique that I
2591         want to, and the two don't mix: libgc will deadlock when it tries
2592         to stop the world if a thread has already been suspended by
2593         someone else.  Just do the simple suspended create rather than the
2594         general purpose thread suspension for now.
2595
2596         * threads.c: Pass create flags to the timed_thread create call, to
2597         implement suspended thread creation.  ResumeThread() partially
2598         implemented, to cope with the case where a newly created but
2599         suspended thread is launched.
2600
2601 2002-09-30  Dick Porter  <dick@ximian.com>
2602
2603         * sockets.c (ioctlsocket): Set non-blocking mode in a better way,
2604         with fcntl.
2605
2606 2002-09-27  Dick Porter  <dick@ximian.com>
2607
2608         * semaphores.c: Only include semaphore.h if it's present. Patch
2609         for BSD from jmmv@hispabsd.org (Julio Merino).
2610
2611 2002-09-27  Dick Porter  <dick@ximian.com>
2612
2613         * processes.c: Pass environment and working directory to the
2614         daemon when forking.  Don't let argv[0] be duplicated when looking
2615         for the program name.  Implement EnumProcessModules (simple
2616         version for now, lsof-style later if needed), GetModuleBaseName,
2617         {Get,Set}ProcessWorkingSetSize (just faked, because the vm hints
2618         aren't available on Linux).
2619
2620         * process-private.h: Store the process name, and the working set
2621         min and max
2622
2623         * handles.c:
2624         * handles-private.h: New functions to store and retrieve an array
2625         of strings in the scratch space
2626
2627         * daemon.c: Don't miss deleting some handles when a client exits
2628         (we used to rely on the client doing the final cleanup, but
2629         obviously if the client is no longer there the daemon has to do
2630         it).
2631
2632         Process forking now sets the environment and the working
2633         directory.
2634
2635         * io.c: Don't confuse fd 0 with an unassigned handle struct
2636
2637         * atomic.h: Add a google cache alternative to the msdn URL
2638
2639 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2640
2641         * sockets.c:
2642         (_wapi_recvfrom): added ECONNRESET to the switch.
2643
2644 2002-09-24  Mark Crichton  <crichton@gimp.org>
2645
2646         * atomic.h: Yea.  On linux, sparc isn't sparc, it's __sparc__.
2647         Added to ifdef.
2648
2649 2002-09-19  Mark Crichton  <crichton@gimp.org>
2650
2651         * daemon.c, shared.c: Added NEED_LINK_UNLINK for systems that
2652         dont have Linux's abstract filesystem for sockets.
2653
2654 2002-09-19  Mark Crichton  <crichton@gimp.org>
2655
2656         * atomic.h: Added SPARC atomic asm code.
2657         * daemon.c, handles-private.h, handles.c, wapi-private.h:
2658         undefined _POSIX_THREAD_PROCESS_SHARED.  This actually exists on
2659         Solaris 9, however, the code paths don't seem to work.  More testing
2660         on the shared case is *really* needed.
2661
2662 2002-09-03  Dick Porter  <dick@ximian.com>
2663
2664         * threads.h: 
2665         * threads.c: Removed PosixKillThread(), because it's not in the
2666         w32 api
2667
2668 2002-08-20  Dick Porter  <dick@ximian.com>
2669
2670         * handles.c (_wapi_handle_scratch_store): Made stored byte lengths
2671         multiples of 4 bytes, to keep header structures aligned.  Needed
2672         for sparc, at least. (Patch from crichton@gimp.org)
2673
2674         * handles.c: Removed 'disable_shm' variable (we've defaulted to
2675         building with shm enabled for months now)
2676
2677 2002-08-19  Dick Porter  <dick@ximian.com>
2678
2679         * daemon.c: Rewrote the poll() loop to use GIOChannels instead,
2680         for legacy NeXT-based systems.
2681
2682 2002-08-12  Dick Porter  <dick@ximian.com>
2683
2684         * atomic.h: Rename some parameters to avoid c++ keywords (Patch
2685         from Joseph Wenninger <kde@jowenn.at>)
2686
2687 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
2688
2689         * threads.c: use fast spinlocks by default
2690
2691 2002-08-02  Dick Porter  <dick@ximian.com>
2692
2693         * io.c (GetStdHandle): Add a handle reference when returning a
2694         duplicate console handle.  This fixes the unref_handle errors in
2695         NUnit.
2696
2697 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
2698
2699         * threads.c (TLS_PTHREAD_MUTEX): define this because else some
2700         tests does not work
2701
2702 2002-08-01  Dick Porter  <dick@ximian.com>
2703
2704         * threads.c: Use atomic spinlocks in TLS functions
2705
2706         * mono-spinlock.h:
2707         * Makefile.am: Added mono-spinlock.h
2708
2709 2002-07-21  Jeffrey Stedfast  <fejj@ximian.com>
2710
2711         * daemon-messages.c: #include <sys/types.h> and <sys/sockets.h> -
2712         these are needed for sendmsg() and also for struct msghdr (at
2713         least on Solaris). Solaris still won't build because struct msghdr
2714         doesn't have msg_flags, msg_control, or msg_controllen members.
2715         (CMSG_SPACE): Define for systems that don't have it.
2716         (CMSG_LEN): Same.
2717
2718 2002-07-20  Dick Porter  <dick@ximian.com>
2719
2720         * wapi-private.h:
2721         * io-private.h:
2722         * io.h:
2723         * io.c:
2724         * handles.c: Implemented pipe handles
2725         
2726         * handles.c:
2727         * daemon.c: Fixed bug in handle closing.
2728
2729         * shared.c:
2730         * daemon.c: Forked processes now close all open file descriptors.
2731
2732 Fri Jul 19 19:05:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
2733
2734         * sockets.h, io-layer.h, critical-sections.h: don't include config.h
2735         in header files.
2736
2737 2002-07-19  Martin Baulig  <martin@gnome.org>
2738
2739         * threads.c (ExitThread): Call exit() if no threads has been
2740         created yet.
2741
2742 2002-07-17  Dick Porter  <dick@ximian.com>
2743
2744         * daemon-messages.c: Freebsd fixes from Andreas Kohn
2745         <andreas.kohn@gmx.net>
2746
2747 2002-07-15  Dick Porter  <dick@ximian.com>
2748
2749         * io.c: Removed bogus console_flush() method, that was just cut
2750         and pasted from file_flush when I separated the two handle types.
2751
2752 2002-07-12  Dick Porter  <dick@ximian.com>
2753
2754         * io.c (convert_from_flags): Fixed misunderstanding wrt fcntl
2755         flags.  Fixes bug 27633.
2756
2757 2002-07-12  Dick Porter  <dick@ximian.com>
2758
2759         * wapi-private.h:
2760         * handles.c:
2761         * daemon.c: Use size of sockaddr_un.sun_path from config.h
2762
2763 2002-07-12  Dick Porter  <dick@ximian.com>
2764
2765         * processes.c (CreateProcess): Send stdin, stdout and stderr
2766         handles if the startup info doesnt specify new ones
2767
2768         * io.c (GetStdHandle): Return the same handle when the same
2769         standard handle is requested
2770
2771         * handles.c: Pass file descriptors when forking
2772
2773         * daemon.c: Use supplied file descriptors when forking a new
2774         process
2775
2776         * daemon-messages.h: 
2777         * daemon-messages.c: Pass stdin, stdout and stderr file
2778         descriptors to the daemon (used when forking)
2779
2780 2002-07-11  Miguel de Icaza  <miguel@ximian.com>
2781
2782         * daemon.c (_wapi_daemon_main): Use sizeof
2783         (main_socket_address.sun_path) instead of hardcoded 108 value.
2784
2785         * handles.c (shared_init): Use sizeof
2786         (shared_socket_address.sun_path) instead of hardcoded 108 value.
2787
2788 2002-07-10  Dennis Haney  <davh@davh.dk>
2789
2790         * shared.c:
2791         * handles.c:
2792         * daemon.c: Lots of documentation, some added error checking, and
2793         code readability improvements.
2794
2795         * daemon-messages.h: Add the Error request type to improve error
2796         checking.
2797
2798         * daemon-messages.c: Do a bit more error checking on send() and
2799         recv(), and log errors with a higher severity level.
2800
2801 2002-07-04  Dick Porter  <dick@ximian.com>
2802
2803         * daemon.c (process_process_fork): Fix argument handling, due to
2804         buggy understanding of g_strsplit() behaviour.
2805
2806 2002-07-03  Dick Porter  <dick@ximian.com>
2807
2808         * threads.h:
2809         * threads.c: Implement OpenThread().  Define access-control values
2810         for thread handles.
2811
2812         * wapi.h:
2813         * processes.h:
2814         * access.h:
2815         * Makefile.am: Added access.h, to hold shared access-control
2816         definitions
2817
2818 2002-07-02  Dick Porter  <dick@ximian.com>
2819
2820         * wapi-private.h (_WAPI_HANDLE_VERSION): New protocol version
2821         
2822 2002-07-02  Dick Porter  <dick@ximian.com>
2823
2824         * handles.c (shared_init): Make a second attempt to contact the
2825         daemon if the shared memory attach succeeds, but the connect()
2826         fails. (This copes with the daemon crashing without cleaning up
2827         the shared memory.)
2828
2829         * Makefile.am: 
2830         * daemon-private.h:
2831         * daemon.c:
2832         * shared.c (_wapi_shm_attach): Don't exec() anything when we fork
2833         the daemon, it's now built into the library.
2834
2835 2002-06-25  Dick Porter  <dick@ximian.com>
2836
2837         * handles.c:
2838         * handles-private.h:
2839         * daemon-messages.h:
2840         * daemon.c: Process forking and handle data management
2841
2842         * processes.h:
2843         * process-private.h:
2844         * processes.c: Process forking and other support functions
2845
2846 2002-06-25  Dick Porter  <dick@ximian.com>
2847
2848         * versioninfo.h: PE resource decoding
2849
2850         * unicode.c (_wapi_unicode_to_utf8): g_utf16_to_utf8 doesnt need
2851         to be told the string length
2852
2853         * io.c: Removed the ACTUALLY_DO_UNICODE option.  Fixed some leaks.
2854         Moved _wapi_time_t_to_filetime and the WapiFileTime typedef to
2855         timefuncs.c
2856
2857 2002-06-12  Dick Porter  <dick@ximian.com>
2858
2859         * daemon.c: 
2860         * daemon-messages.c: Handle SIGPIPE in a non-stupid way in the
2861         daemon, if MSG_NOSIGNAL isn't available.  Thanks to Jaroslaw
2862         Kowalski <jarek@atm.com.pl> for pointing out the bogosity.
2863
2864 2002-06-10  Jaroslaw Kowalski <jarek@atm.com.pl>
2865
2866         * sockets.c, daemon-messages.c: Prevent SIGPIPE from being raised
2867         when writing to a closed socket.
2868
2869 2002-06-08  Jeffrey Stedfast  <fejj@ximian.com>
2870
2871         * mono-mutex.c (mono_once): New convenience function for my
2872         previous fix.
2873
2874         * handles.c:
2875         * error.c: 
2876         * critical-sections.c: 
2877         * threads.c: 
2878         * sockets.c: 
2879         * semaphores.c: 
2880         * processes.c: 
2881         * mutexes.c: 
2882         * io.c: 
2883         * events.c: 
2884         * atomic.c: Use mono_once() rather than pthread_once().
2885
2886 2002-06-06  Jeffrey Stedfast  <fejj@ximian.com>
2887
2888         * handles.c (_wapi_handle_new): pthread_once() is not atomic, so
2889         if multiple threads all try to call _wapi_handle_new() before the
2890         shared data has been initialized, it is possible that we could get
2891         into a condition where shared_init() is being executed and later
2892         threads will pass by pthread_once() due to the fact that it has
2893         already been called and so therefor will attempt to use the shared
2894         data before it has been completely initialized. If we instead use
2895         a standard mutex locking mechanism around shared_init(), we can
2896         avoid the situation entirely. By wrapping the mutex locking in a
2897         check to see if we've already initialized the data, we can even
2898         avoid wasting resources by having to lock/unlock the mutex in any
2899         later calls (the only time we'd have to worry about
2900         locking/unlocking is the initial race to call shared_init() at
2901         startup).
2902
2903 Sat Jun 1 13:27:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
2904
2905         * atomic.h: inline asm fixes from Dennis Haney (davh@davh.dk).
2906
2907 Fri May 31 16:21:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
2908
2909         * daemon.c, handles.c: rename "sun" local var since it's apparently
2910         a #define on Solaris.
2911
2912 Fri May 31 15:40:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
2913
2914         * daemon-messages.c: work-around MSG_NOSIGNAL missing on some
2915         platforms.
2916
2917 2002-05-15  Dick Porter  <dick@ximian.com>
2918
2919         * wait.c: Fix a deadlock in WaitForMultipleObjects
2920
2921 2002-05-14  Dick Porter  <dick@ximian.com>
2922
2923         * io.c: Fix a cut&paste error, found by
2924         Jaroslaw Kowalski <jarek@atm.com.pl>
2925
2926 2002-05-10  Dan Lewis  <dihlewis@yahoo.co.uk>
2927
2928         * io.c: Nasty typo.
2929
2930 2002-05-09  Dick Porter  <dick@ximian.com>
2931
2932         * threads.c: 
2933         * semaphores.c: 
2934         * processes.c: 
2935         * mutexes.c: 
2936         * handles-private.h: 
2937         * events.c: 
2938         * Makefile.am: Remove now-unused file wait-private.h
2939
2940 2002-05-08  Dick Porter  <dick@ximian.com>
2941
2942         * shared.c: Better error messages, and report when daemon
2943         connection fails rather than blocking forever.  Do some more
2944         shared memory sanity checking.
2945
2946         * handles.c: Better error messages when connecting to shared
2947         memory and the handle daemon.  Fall back to non-shared handles if
2948         an error occurs.  Set the default back to 'shared handles'.  Fix a
2949         crashing bug in scratch space allocation that mangled the block
2950         headers.
2951
2952 2002-05-07  Miguel de Icaza  <miguel@ximian.com>
2953
2954         * handles.c (shared_init): Disable SHM for now, people have too
2955         many problems with this, and the diagnostics are not helping.
2956
2957 2002-05-06  Dan Lewis  <dihlewis@yahoo.co.uk>
2958
2959         * io.c: CreateFile sets win32 last error.
2960
2961 2002-05-05  Dick Porter  <dick@ximian.com>
2962
2963         * wapi-private.h: 
2964         * handles-private.h:
2965         * io.c: 
2966         * io-private.h:
2967         * mutexes.c: 
2968         * mutex-private.h: 
2969         * processes.c: 
2970         * process-private.h: 
2971         * semaphores.c: 
2972         * semaphore-private.h: 
2973         * sockets.c: 
2974         * socket-private.h: 
2975         * events.c: 
2976         * event-private.h: Simplify the WapiHandleOps struct: take out all
2977         the file-specific entries, leaving just the items that operate on
2978         handles themselves.  Split the close operation into shared and
2979         private parts: shared close is called by the daemon.
2980
2981         * handles.c: As above, but also pass handle allocation, ref and
2982         unref operations to the daemon.  Populate the handle_ops array at
2983         compile time, because the daemon needs to call ops on handles too.
2984         Don't bother to track open handle counts any more, the daemon does
2985         that.
2986         
2987         * threads.c: 
2988         * thread-private.h: As above, but also make the thread data
2989         handle-private.
2990
2991         * shared.c: Fork a handle daemon if the calling process created
2992         the shared memory segment.
2993
2994         * daemon.c:
2995         * daemon-messages.c:
2996         * daemon-messages.h:
2997         * Makefile.am: Build a daemon to manage handle allocation and
2998         destruction without needing to lock the shared memory
2999
3000 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
3001
3002         * atomic.c: Changed to use a normal mutex rather than a spinlock
3003         since a lot of platforms seem to not have them :\
3004
3005 2002-04-30  Dick Porter  <dick@ximian.com>
3006
3007         * Completely rewrote the handle waiting code: removed the helper
3008         thread and its attendant complexity.  All handle waiting is now
3009         abstracted into the WaitForSingleObject() and
3010         WaitForMultipleObjects() functions.
3011
3012         * Implemented inter-process sharing of handles using sysv shared
3013         memory.  This makes handles even more opaque, with a handle now
3014         just an index into an array.
3015         
3016 2002-04-25  Dan Lewis  <dihlewis@yahoo.co.uk>
3017
3018         * io.c: unitialized pointer in GetCurrentDirectory.
3019
3020 Sat Apr 20 13:37:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
3021
3022         * threads.c: destroy the mutex at thread destruction
3023         (if/when thread destruction code will be actually called).
3024         When protecting a tls data pointer from the gc, use also the 
3025         thread id in the key.
3026         
3027 Wed Apr 17 18:36:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
3028
3029         * timed-thread.c: avoid race condition when setting the thread to
3030         detached.
3031
3032 2002-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
3033
3034         * jit.h: to more #include lines to avoid breaking compilation
3035         under windows when upgrading mingw and w32api to version
3036         1.3 (thanks Dick!).
3037
3038 2002-04-16  Dick Porter  <dick@ximian.com>
3039
3040         * atomic.h: Explanatory comment about lack of 80386 support
3041
3042 2002-04-15  Dick Porter  <dick@ximian.com>
3043
3044         * atomic.h: use xaddl for InterlockedIncrement() and
3045         InterlockedDecrement().  Use cmpxchgl in a loop for
3046         InterlockedExchange() and InterlockedExchangePointer().
3047
3048 Mon Apr 15 13:31:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
3049
3050         * unicode.c: fix unicode_len() to not access uninitialized memory
3051         (and updated to conform to mono code style).
3052
3053 Fri Mar 29 17:15:11 CET 2002 Paolo Molaro <lupus@ximian.com>
3054
3055         * io.c: EEXISTS is ignored for directory creation.
3056         * mono-mutex.h: remove silly "pragma }" that emacs users insert
3057         because they use a broken editor:-)
3058
3059 2002-03-28  Dick Porter  <dick@ximian.com>
3060
3061         * sockets.h: 
3062         * sockets.c: 
3063         * io.c: 
3064         * handles.h: 
3065         * handles.c: Warning cleanups
3066
3067 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
3068
3069         * unicode.h, unicode.c: changed to gunichar2
3070         * io.h, io.c: changed strings to gunichar2*, added
3071         SetFileAttributes(), GetCurrentDirectory(), SetCurrentDirectory(),
3072         some fixes to FindFirstFile() and friends.
3073
3074 2002-03-26  Dick Porter  <dick@ximian.com>
3075
3076         * types.h: Implement the large integer struct
3077
3078         * timefuncs.h:
3079         * timefuncs.c: Dummy functions that don't yet implement
3080         QueryPerformanceCounter() and QueryPerformanceFrequency()
3081
3082         * threads.h:
3083         * threads.c: Implement SleepEx()
3084
3085         * system.h:
3086         * system.c: Beginnings of GetSystemInfo()
3087
3088         * mono-mutex.c (pthread_mutex_timedlock): Fix a ms/ns conversion
3089         thinko
3090
3091         * context.h:
3092         * context.c: Dummy function that doesnt yet implement
3093         GetThreadContext()
3094
3095         * atomic.h: 
3096         * atomic.c: Interlocked functions
3097
3098 Mon Mar 25 13:01:40 CET 2002 Paolo Molaro <lupus@ximian.com>
3099
3100         * threads.c: use a gc-safe hash table to store tls pointers.
3101
3102 2002-03-22  Dick Porter  <dick@ximian.com>
3103
3104         * threads.c: Fix a race condition where a thread can start and
3105         exit before the handle has been properly initialised (no reason
3106         why the handle couldn't be initialised beforehand, so do so)
3107
3108         Fix a ms to ns conversion magnitude thinko.
3109
3110 2002-03-21  Dick Porter  <dick@ximian.com>
3111
3112         * semaphores.c: Fix a problem when waiting for one or more
3113         semaphores, and another semaphore is Released (all waiting
3114         semaphores assumed they were signalled)
3115
3116 2002-03-29  Dan Lewis <dihlewis@yahoo.co.uk>
3117
3118         * io.h, io.c, uglify.h: added MoveFile, CopyFile, CreateDirectory,
3119         RemoveDirectory, GetFileAttributes, GetFileAttributesEx
3120
3121 2002-03-19  Dietmar Maurer  <dietmar@ximian.com>
3122
3123         * threads.c (Sleep): bug fix: 1ms == 1000000ns
3124
3125 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
3126
3127         * io.h, io.c, events.c, mutexes.c, semaphores.c, sockets.c,
3128         threads.c, io.c: added flush method to handles.
3129
3130         * io.c: FlushFileBuffers() and FindFirstFile() functions.
3131
3132 Thu Mar 7 17:21:52 CET 2002 Paolo Molaro <lupus@ximian.com>
3133
3134         * threads.c, timed-thread.c, wait.c: Boehm-GC anable.
3135
3136 2002-02-20  Dick Porter  <dick@ximian.com>
3137
3138         * io-layer.h: Always build without cygwin support on windows
3139
3140 Mon Feb 18 15:50:59 CET 2002 Paolo Molaro <lupus@ximian.com>
3141
3142         * sockets.c: #undef DEBUG.
3143
3144 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
3145
3146         * io-layer.h: conditionally include sys/filio.h and sys/sockio.h
3147         for FIONBIO, FIONREAD, and SIOCATMARK.
3148
3149 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
3150
3151         * sockets.c: conditionally include sys/filio.h and sys/sockio.h
3152         for FIONBIO, FIONREAD, and SIOCATMARK.
3153
3154 2002-02-13  Dick Porter  <dick@ximian.com>
3155
3156         * sockets.c: Implement shutdown and select
3157
3158 2002-02-13  Jeffrey Stedfast  <fejj@ximian.com>
3159
3160         * mono-mutex.[c,h]: New source files that thinly wrap all pthread
3161         functions that take pthread_mutex_t and/or pthread_mutexattr_t
3162         arguments for the sake of portability. Implements recursive
3163         mutexes and pthread_mutex_timedlock.
3164
3165         * critical-sections.c:
3166         * events.c:
3167         * handles.c:
3168         * mutexes.c:
3169         * semaphores.c:
3170         * threads.c:
3171         * timed-thread.c:
3172         * wait.c: Use the mono-mutex wrapper portability functions/macros.
3173
3174         * pthread-compat.[c,h]: Replaced by mono-mutex.[c,h]
3175
3176 2002-01-23  Dick Porter  <dick@ximian.com>
3177
3178         * sockets.c: Networking support, mostly wrapping BSD socket APIs
3179         with handle code, and translating errno into w32 error codes.
3180
3181         * macros.h: Some w32 macros used with the socket support
3182
3183         * error.c: Implemented GetLastError() and SetLastError()
3184
3185         * Makefile.am: Added sockets, with kludge to override some symbols
3186
3187 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
3188
3189         * unicode.c (_wapi_unicode_to_utf8): byteswap UTF16 strings before
3190         passing them to iconv
3191         (_wapi_unicode_to_utf8): only swap bytes on LE systems, remove bug
3192         from previous commit.
3193
3194 2001-12-11  Dick Porter  <dick@ximian.com>
3195
3196         * io.c: Implement DeleteFile(), GetFileTime(), SetFileTime() and
3197         FileTimeToSystemTime().
3198
3199         * unicode.c (unicode_len): Nasty way of finding length of unicode
3200         string with embedded NULLs (counts until two NULLs together).
3201
3202         * mutexes.c (mutex_close): 
3203         * events.c (event_close): Release the internal pthreads resources
3204
3205 2001-11-26  Dick Porter  <dick@ximian.com>
3206
3207         * critical-sections.c:
3208         * events.c:
3209         * handles.c:
3210         * io.c:
3211         * mutexes.c:
3212         * semaphores.c:
3213         * threads.c:
3214         * timed-thread.c:
3215         * wait.c: turn off DEBUG messages
3216
3217 2001-11-22  Dick Porter  <dick@ximian.com>
3218
3219         * handles.c (SignalObjectAndWait): Implement
3220
3221         * wait.c (WaitForSingleObject): Fix case where timeout == 0
3222
3223         * threads.c:
3224         * semaphores.c:
3225         * mutexes.c:
3226         * io.c:
3227         * events.c: Support for SignalObjectAndWait
3228         
3229 2001-11-21  Dick Porter  <dick@ximian.com>
3230
3231         * events.c:
3232         * handles.c:
3233         * mutexes.c:
3234         * semaphores.c:
3235         * threads.c:
3236         * wait.c: Reliable method of returning which handle was signalled
3237         on return from WaitForMultipleObjects().
3238
3239 2001-11-21  Dick Porter  <dick@ximian.com>
3240
3241         * events.c: Implement events
3242
3243 2001-11-15  Dick Porter  <dick@ximian.com>
3244
3245         * mutexes.c: Implement mutexes
3246
3247         * threads.c: 
3248         * semaphores.c: 
3249         * misc.c: Factor out some common code
3250
3251 2001-11-13  Dick Porter  <dick@ximian.com>
3252
3253         * threads.c: Implement TLS.  Implement GetCurrentThreadId(), and
3254         GetCurrentThread() by maintaining a hash of thread handles.
3255
3256         * threads.h: Define thread and process creation flags
3257
3258 2001-11-12  Dick Porter  <dick@ximian.com>
3259
3260         * critical-sections.c: Implement critical sections
3261
3262 2001-11-12  Dick Porter  <dick@ximian.com>
3263
3264         * semaphores.c: Implement semaphores
3265
3266         * wait.c (wait_for_item): Maintain a wait count rather than count
3267         signalled booleans.
3268
3269         * threads.c (thread_wait_multiple): Don't lock the wait item, that
3270         will block other wait threads
3271
3272 2001-11-11  Dick Porter  <dick@ximian.com>
3273
3274         * Makefile.am: Rename some automake variables
3275         (from Nick Drochak <ndrochak@gol.com>)
3276
3277 2001-11-10  Dick Porter  <dick@ximian.com>
3278
3279         * Makefile.am (libwapiincludedir): Fix include destination
3280
3281         * .cvsignore: Ignore generated files
3282
3283 2001-11-10  Dietmar Maurer  <dietmar@ximian.com>
3284
3285         * pthread-compat.c: added some include files to make it compile on
3286         linux.
3287
3288 2001-11-08  Dick Porter  <dick@ximian.com>
3289
3290         * Initial checkin.
3291
3292         This is a library emulating the win32 threading and IO API.