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