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