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