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