2004-07-06 Dick Porter <dick@ximian.com>
[mono.git] / mono / io-layer / ChangeLog
1 2004-07-06  Dick Porter  <dick@ximian.com>
2
3         * io.c (file_setfiletime): Check for underflow when converting to
4         time_t values.  Set error codes when returning failure.  Fixes bug
5         60970.
6
7 2004-07-05  Dick Porter  <dick@ximian.com>
8
9         * mutexes.c (mutex_ops_init): Make the named mutex mutex sharable.
10
11         * daemon.c (unref_handle): Only destroy a handle if all processes
12         have released it, not just the current one.  Fixes bug 60887.
13
14 2004-06-24  Dick Porter  <dick@ximian.com>
15
16         * mutexes.c: Indicate when a named mutex was reused
17
18 2004-06-24  Dick Porter  <dick@ximian.com>
19
20         * threads.c (SuspendThread): 
21         * timed-thread.c (_wapi_timed_thread_suspend): Wrap sem_wait in a
22         while loop.  See bug 58161.
23
24 Wed Jun 23 23:29:04 CEST 2004 Paolo Molaro <lupus@ximian.com>
25
26         * io.c: don't use sharemode for on-disk file permissions: it's used
27         for shared access to the open file.
28
29 2004-06-22  Dick Porter  <dick@ximian.com>
30
31         * events.c (CreateEvent): When creating an auto-reset event that
32         is initially owned, make sure the set count starts at 1.
33
34 2004-06-18  Dick Porter  <dick@ximian.com>
35
36         * event-private.h:
37         * events.c: Auto-reset events need to release one thread for each
38         time SetEvent() is called.  Fixes bug 41292.
39
40         * threads.h:
41         * mutex-private.h:
42         * mutexes.c: Scan for mutexes that are still locked by a thread
43         when it exits.  Fixes the MS demo app linked by bug 41292.
44
45         * wait.c (test_and_own): Make sure a handle is signalled before it
46         is owned.
47
48 2004-06-16  Dick Porter  <dick@ximian.com>
49
50         * timed-thread.c: Call the thread cleanup exit routine before taking
51         the join mutex, because this could deadlock if another thread tries
52         to join in the meantime.  This fixes the hang-at-exit problem seen
53         on macos.
54
55 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
56
57         * threads.c: Implemented SleepEx.
58         * threads.h: Fixed SleepEx signature.
59
60 2004-06-03  Miguel de Icaza  <miguel@ximian.com>
61
62         * threads.c: When running under valgrind, do not allocate too much
63         stack, as Valgrind default is 1 meg.
64
65 2004-05-27  Dick Porter  <dick@ximian.com>
66
67         * io.h:
68         * io.c: Implemented LockFile() and UnlockFile()
69
70 2004-05-21  Dick Porter  <dick@ximian.com>
71
72         * io.c (CreateFile): Check for existing share modes when opening
73         a file.
74
75         * handles.c: 
76         * handles-private.h: 
77         * daemon-messages.h: 
78         * daemon.c: Maintain a hash of file share modes, keying on device
79         and inode (to cope with symlinks.)
80
81 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
82
83         * daemon-messages.c: Retry if the communication with the daemon is
84           interrupted by a signal.
85         * io.c, sockets.c: Check for EINTR in every syscall that can be interrumped. 
86           Only return an error in this case if there is something in the apc queue
87           (which means that it is an interruption requested by the "user").
88         * processes.c: Use WaitForSingleObjectEx. No need to pass "alertable" as
89           true since the wait is small.
90         * shared.c: Retry write calls when interrumped by a signal.
91         * timed-thread.h, timed-thread.c: added _wapi_thread_apc_pending, which
92           returns TRUE if there are pending asynchronous calls (APC) for the
93           provided thread. Also added _wapi_thread_dispatch_apc_queue which calls
94           the enqueued APCs. Defined a new struct ApcInfo that holds information
95           about an enqueued APC.
96         * thread-private.h, threads.c: Implemented QueueUserAPC (which does the same
97           as in win32),_wapi_thread_apc_pending and _wapi_thread_dispatch_apc_queue. 
98           These last two methods call the corresponding apc methods in 
99           thread-private using the provided thread handle.
100         * threads.h: Added QueueUserAPC.
101         * uglify.h: Added WapiApcProc (needed by QueueUserAPC).
102         * wait.c, wait.h: Changed WaitForSingleObject to WaitForSingleObjectEx, and
103           WaitForMultipleObjects to WaitForMultipleObjectsEx. Implemented support
104           for APCs in those two methods and also in SleepEx.
105
106 2004-05-17  Dick Porter  <dick@ximian.com>
107
108         * io.c (CopyFile): Speed up.  Fixes bug 57859.
109
110 2004-05-13  Dick Porter  <dick@ximian.com>
111         * mono-mutex.c (mono_mutex_unlock): Return EPERM when the current
112         thread doesn't own the mutex, rather than assert()ing.
113
114 2004-05-11  Dick Porter  <dick@ximian.com>
115
116         * shared.c (_wapi_shm_attach): Cope when a previous daemon startup
117         attempt failed, leaving shared files that look like a daemon is
118         still starting.
119
120 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
121
122         * io.c:
123         (SetFileAttributes): don't the the exec bit if the corresponding read
124         bit is not set.
125
126 2004-05-10  Zoltan Varga  <vargaz@freemail.hu>
127
128         * io.c (FindFirstFile): Fix invalid free.
129
130 2004-05-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
131
132         * io.c: translate from GFileError to errno codes and don't free
133         variables right after calling mono_io_scandir, as we may overwrite
134         errno value.
135
136 2004-05-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
137
138         * io.c: g_dir_open return ENOENT for directories on which we don't have
139         read/execute permission, while returning EPERM for anything below those.
140         So, change ENOENT by EPERM if the directory exists.
141
142 2004-05-07  Dick Porter  <dick@ximian.com>
143
144         * io.c (SetFileAttributes): Don't have failed chmod()s cause a
145         "file not found" error.  Fixes bug 54032.
146         
147 2004-05-07  Dick Porter  <dick@ximian.com>
148
149         * io.c (FindFirstFile): Comment out a windows-compatibility check
150         that breaks when directories have metachars in their names.
151         Workaround for bug 58116.
152
153 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
154
155         * io.c: fixed for FindFirstFile for empty directories. Closes
156         bug #58147.
157
158 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
159
160         * processes.c: set the start time for the current process. Fixes bug
161         #58109.
162
163 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
164
165         * io-private.h: 'namelist' is now a gchar ** in _WapiHandlePrivate_find.
166         * io.c: implemented scandir using glib functions.
167
168 2004-05-04  Dick Porter  <dick@ximian.com>
169
170         * daemon.c (read_message): Return FALSE on error so the GSource
171         callback itself can return FALSE.  Cures the infinite loop poll()
172         warning on MacosX.
173         * shared.c: Fix some daemon startup race conditions.
174
175 2004-04-29  Miguel de Icaza  <miguel@ximian.com>
176
177         * io.c (CopyFile): Use 32k buffers to copy the file instead of 2k,
178         use the stack, do not use dynamic memory.
179
180 2004-04-29  Zoltan Varga  <vargaz@freemail.hu>
181
182         * io.c: Add scandir implementation for platforms which do not have
183         it, like solaris.
184
185 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
186
187         * io.[ch]: implemented GetLogicalDriveStrings.
188
189 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
190
191         * io.c:
192         * sockets.c: use the field name from configure when accessing sigval
193         pointer field. Makes this work on the Mac.
194
195 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
196
197         * atomic.c: (InterlockedExchange) fix typo for
198         mutex name
199
200 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
201
202         * io.c:
203         * sockets.c: added check for sys/aio.h.
204
205 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
206
207         * error.[ch]: added _wapi_get_win32_file_error...
208         * io.c: ... which was _wapi_get_win32_error here.
209         * sockets.c: rename the function calls here too.
210
211 2004-04-28  Dick Porter  <dick@ximian.com>
212
213         * daemon-messages.c: Avoid a deadlock when a thread is killed while
214         waiting for the daemon by using a recursive mutex.  Helps bug 56699.
215
216 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
217
218         * io.c: fixed leak in async_notifier().
219
220         * sockets.[ch]: added AIO support for sockets and fixed WSAIoctl
221         declaration.
222
223         * threads.c: removed old comment.
224
225 2004-04-26  David Waite  <mass@akuma.org>
226
227         * daemon-messages.h:
228         * daemon-private.h
229         * error.h:
230         * io.h:
231         * processes.h:
232         * shared.h:
233         * thread-private.h:
234         * wapi-private.h: remove comma from end of enumeration declarations
235         * status.h: cast unsigned int types to int for enum assignment
236
237 2004-04-26 David Waite <mass@akuma.org>
238
239         * io.c:
240         * timefuncs.c: declare 64-bit constants as long long types (i.e.
241         10ULL)
242
243 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
244
245         * socket-wrappers.h: _wapi_socket == WSASocket now. Added
246         WSA_FLAG_OVERLAPPED.
247
248         * sockets.c: new unused parameters for _wapi_socket.
249
250 2004-04-22  Miguel de Icaza  <miguel@ximian.com>
251
252         * timed-thread.c: Replace sem_init with MONO_SEM_INIT to handle
253         the fact that MacOS X is a piece of junk (sem_init is *defined* in
254         the libc, but they return `not implemented'). 
255
256 2004-04-22  Dick Porter  <dick@ximian.com>
257
258         * handles.c: 
259         * handles-private.h: Reference the handle when it is locked, so
260         that another thread can't blow it away while we're waiting for it
261         to become signalled.
262         
263         * wait.c: 
264         * timed-thread.c: 
265         * threads.c: 
266         * sockets.c: 
267         * semaphores.c: 
268         * mutexes.c: 
269         * mono-mutex.c: 
270         * io.c: 
271         * handles.c: 
272         * handles-private.h: 
273         * events.c: 
274         * error.c: 
275         * daemon-messages.c: 
276         * critical-sections.c: 
277         * atomic.c: Added pthreads cleanup handlers and error asserts
278
279         * shared.c: 
280         * handles.c: Fixed the gcc "variable might be used uninitialised"
281         warnings.  They can't happen, but gcc doesn't know that
282         g_assert()s don't return.
283
284         Fixed the declaration of _wapi_handle_process_kill() so that it
285         expects the correct type for the pid.
286         
287         * threads.c: Removed the TLS_PTHREAD_MUTEX style locking that
288         hasn't been used in ages and just made the code more complex.
289
290 2004-04-17  Zoltan Varga  <vargaz@freemail.hu>
291
292         * processes.c: Include <signal.h> for SIGKILL and SIGILL + fix some
293         warnings. Fixes #57168.
294
295 2004-04-16  Dick Porter  <dick@ximian.com>
296
297         * threads.c (Sleep): Using div(3) with a negative (when signed)
298         numerator causes the quotient to be 0 and the remainder to be the
299         numerator.  This feeds a small negative value to nanosleep(3),
300         which will return immediately and cause a busy wait.  Fixes bug
301         56351.
302
303 2004-04-15  Dick Porter  <dick@ximian.com>
304
305         * io-private.h:
306         * io.c: Rewrite FindFirstFile and FindNextFile using scandir(3)
307         and fnmatch(3) instead of glob(3).  glob() can't cope with being
308         given filenames containing metachars.  This fixes bug 40557.
309
310 2004-04-14  Bernie Solomon  <bernard@ugsolutions.com>
311
312         * security.c: #warning is a GCC-ism
313
314 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
315
316         * security.c: Removed GetUserName as glib g_get_user_name does a
317         better (portability) job. Added ImpersonateLoggedOnUser and
318         RevertToSelf.
319
320 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
321
322         * mono-mutex.h: move pthread_mutex_timedlock declaration to...
323         * mono-mutex.c: ...here. It was causing a warning that prevented
324         libgdiplus compilation.
325
326 2004-04-04  Miguel de Icaza  <miguel@ximian.com>
327
328         * security.c (GetUserName): Make it work on MacOS X
329
330 2004-04-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
331
332         * security.c: use getpwuid_r if available. This one is thread-safe.
333
334 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
335
336         * Makefile.am: Added security.c|h.
337         * security.c: New file for security related functions. Added function
338         GetUserName to fix #56144.
339         * security.h: New. Header file for security.c
340         * wapi.h: Added include for security.h
341
342 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
343
344         * daemon-messages.h: added kill structs.
345
346         * daemon.c: implemented process_process_kill.
347         * handles-private.h:  define process_process_kill.
348         * handles.c: implemented _wapi_handle_process_kill.
349         * processes.[ch]: implemented TerminateProcess.
350
351 2004-03-25  Bernie Solomon  <bernard@ugsolutions.com>
352
353         * daemon.c (rem_fd): On solaris you seem to get an
354         error even after removing the input source so don't
355         try and rem_fd it twice.
356
357 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
358
359         * daemon.c: in process_post_mortem, If the child terminated due to the 
360         receipt of a signal, the exit status must be based on WTERMSIG, since 
361         WEXITSTATUS returns 0 in this case.
362
363 2004-03-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
364
365         * daemon.c: turned a warning into a DEBUG statement. Now we may hit it.
366
367 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
368
369         * daemon.c: only call getdtablesize () once.
370         * processes.c: wait 500 ms to check if execve failed and throw the same
371         exception as MS on failure. Fixes bug #32809.
372
373 2004-03-17  Bernie Solomon  <bernard@ugsolutions.com>
374
375         * io.c (async_notifier): use "union sigval" rather
376         than sigval_t as Solaris doesn't have sigval_t
377         (which isn't in IEEE 1003.1 either).
378
379 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
380
381         * io.c: added debug stuff and removed a few redundant lines in
382         file_write.
383
384 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
385
386         * io-private.h: added new fields for file structure. Declare
387         _wapi_io_add_callback.
388
389         * io.c: added _wapi_get_win32_error, support aio_read/write in
390         file_read/write. Implemented _wapi_io_add_callback, which is where
391         BindHandle ends up.
392         
393         * io.h: added new fields for WapiOverlapped and typedef for the
394         callback.
395
396         * processes.c: fixed off-by-one bug when handling environment variables 
397         passed in.
398
399         * threads.[ch]: implemented BindIoCompletionCallback.
400
401         * uglify.h: added typedef for LPOVERLAPPED_COMPLETION_ROUTINE.
402
403 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
404
405         * socket-wrappers.h: Remove extra semicolon.
406
407 2004-03-03  Dave Camp  <dave@ximian.com>
408
409         * daemon.c: (add_fd), (fd_activity), (_wapi_daemon_main):
410         Use a new main context.
411
412 2004-03-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
413
414         * io.c:
415         (GetFileAttributes): set the error depending on errno instead of
416         setting ERROR_FILE_NOT_FOUND always. See bug #55160.
417
418 2004-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
419
420         * io.c:
421         (CopyFile): free the buffer on error.
422         * sockets.c:
423         (WSAIoctl): free the buffer on error.
424
425 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
426
427         * error.c: fixed mapping for EPROTONOSUPPORT and ESOCKTNOSUPPORT.
428
429         * sockets.[ch]: retry creating the socket for AF_INET, SOCK_RAW
430         using IP protocol with IP over IP. Implemented WSAIoctl UNIX-style.
431
432 2004-01-27  Bernie Solomon  <bernard@ugsolutions.com>
433
434         * shared.c (_wapi_shm_file): add hostname
435         to shared data file names to handle NFS mounted
436         .wapi directories.
437
438 Mon Jan 26 16:15:03 CET 2004 Paolo Molaro <lupus@ximian.com>
439
440         * sockets.h: remove obsolete soklen_t typedef.
441
442 Fri Jan 23 21:07:02 CET 2004 Paolo Molaro <lupus@ximian.com>
443
444         * socket-wrappers.h, sockets.h, sockets.c, Makefile.am: move socket
445         wrappers to its own non-installed header file.
446
447 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
448
449         * io.c:
450         (FindFirstFile): unlock the handle if FindNextFile fails.
451         (FindNextFile): g_free a couple of pointers before retrying.
452
453         * wait.c:
454         (WaitForMultipleObjects): if only one handle provided, use
455         WaitForSingleObject.
456
457 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
458
459         * handles-private.h: (_wapi_handle_type) check
460         for segment in range before using it
461
462 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
463
464         * thread-private.h: _wapi_thread_ops is now const
465         must match .c file.
466
467 Mon Dec 22 18:29:03 CET 2003 Paolo Molaro <lupus@ximian.com>
468
469         * threads.c, timed-thread.c, timed-thread.h: use mach
470         semaphores on Darwin (MacOSX) since the posix ones
471         are mostly broken there (threads are not created suspended
472         and they can start executing before they are fully initialized
473         like in tests/thread-static.cs).
474
475 Mon Dec 22 17:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
476
477         * atomic.h: ppc fixes.
478
479 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
480
481         * handles.c: remove my bad use of MONO_ZERO_ARRAY_LENGTH
482         in HDRSIZE 
483
484 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
485
486         * shared.c: (_wapi_shm_open) make scratch file
487         not have to immediately regrow to avoid remaps
488         (HPUX can't cope with these).
489         (_wapi_shm_attach) use actual size of file
490         to set scratch data_len for the creating process.
491
492         * handles.c: (_wapi_handle_new_internal) make
493         sure mutex & cond var are initialized even for
494         non process shared ones. 
495         (_wapi_handle_unref) always call destroy 
496         routines on mutex & cond var
497
498 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
499
500         * daemon.c: change channel data structure so
501         input sources are removed from glib event loop
502         properly. xsp works better on Solaris and 
503         fixes #51278
504
505 2003-12-12  Bernie Solomon  <bernard@ugsolutions.com>
506
507         * wapi-private.h: Replace G_GNUC_PRETTY_FUNCTION
508         definition with file & line number for non-GCC
509         compiles.
510
511 2003-12-08  Bernie Solomon  <bernard@ugsolutions.com>
512
513         * Makefile.am: make sure hppa_atomic.s is in distribution
514
515 2003-12-01  Dick Porter  <dick@ximian.com>
516
517         * wapi-private.h: 
518         * mutexes.c (CreateMutex): 
519         * mutex-private.h (struct _WapiHandle_mutex): 
520         * handles.c: Look up certain handle types by name, in a shared
521         namespace.  Currently only mutex handles have this implemented.
522         Fixes bug 51089.
523
524         * semaphores.c (CreateSemaphore): 
525         * events.c (CreateEvent): Fix signature
526
527 2003-11-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
528
529         * io.c: don't call g_free before testing errno as it may modify it.
530         If the path exists, return an error if it's not a directory. Fixes
531         bug #50753.
532
533 2003-11-20  Dick Porter  <dick@ximian.com>
534
535         * io.c: Missed a little-endian UTF16 conversion.  Patch from
536         Jeroen Zwartepoorte (Jeroen@xs4all.nl), fixes bug 51065.
537
538 2003-10-29  Dick Porter  <dick@ximian.com>
539
540         * io.c (MoveFile): If the move crosses filesystems, try and fall
541         back to copy and delete.  Patch from Jörg Rosenkranz
542         (JoergR@voelcker.com), fixes bug 50298.
543
544 2003-10-28  Dick Porter  <dick@ximian.com>
545
546         * io.c: Use the new encoding conversion to cope with non-utf8
547         locales in filenames.
548
549         * processes.c: Ditto for process arguments.
550
551 Tue Oct 21 12:01:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
552
553         * atomic.h: some ppc inline asm fixes (incorrect use of labels, 
554         incorrect register constraints, incorrect clobber lists).
555
556 2003-10-13  Bernie Solomon  <bernard@ugsolutions.com>
557
558         * Makefile.am hppa_atomic.s: add HP 64bit
559         implementation of atomic ops
560
561 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
562
563         * threads.c (CreateThread): Wrap pthread_attr_setstacksize call in
564         a conditional for platforms that don't have it.
565
566 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
567
568         * threads.c: (CreateThread) use stacksize argument
569         if non-zero - change default for 64 bits to 4Mb
570
571 2003-09-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
572
573         * sockets.c: set last error when socket creation fails. This shed some
574         light on bug #49015.
575
576 2003-09-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
577
578         * processes.c: fixed bug #48973: we only change \ by / for the argument
579         to be used as command.
580         When getting the program name from the args, don't let the space between
581         them in the args.
582
583 2003-09-24  Bernie Solomon <bernard@ugsolutions.com>
584
585         * atomic.h atomic.c: fix sparc so lock is
586         global, increment does so and it compiles under Sun compiler.
587
588 2003-09-22  Bernie Solomon <bernard@ugsolutions.com>
589
590         * handles.c: include <string.h> directly as may
591         not be nested in <sys/un.h> like Linux
592
593 2003-09-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
594
595         * io.c:
596         (DeleteFile): call SetLastError on failure. Fix by
597         richard.torkar@htu.se (Richard Torkar). Closes bug #48222.
598
599 2003-09-15  Lluis Sanchez Gual  <lluis@ximian.com>
600
601         * daemon.c: In compare_process(), discard handles already signalled.
602
603 2003-09-02  Dick Porter  <dick@ximian.com>
604
605         * io.c: Work around glib brain-dead assumptions about utf8-encoded
606         filenames.  Fixes bug 30781.
607
608 2003-08-28  Dick Porter  <dick@ximian.com>
609
610         * critical-sections.c:  Patch from Bernie Solomon
611         <bernard@ugsolutions.com> to emit a warning if locking a critical
612         section fails.
613
614 2003-07-23  Dick Porter  <dick@ximian.com>
615
616         * shared.c:
617         * daemon.c (maybe_exit): Avoid the race condition when the daemon is
618         closing but another client comes along when the shared data is still
619         visible.  Should fix bugs 33671 and 35213.
620
621 2003-07-23  Dick Porter  <dick@ximian.com>
622
623         * handles.c:  Initialise handle mutex and cond.  Fix by
624         Bernie Solomon <bernard@ugsolutions.com>
625
626 2003-07-15  Dick Porter  <dick@ximian.com>
627
628         * timed-thread.c (timed_thread_start_routine): Fix virtual memory
629         leak when threads quit.  Fixes bug 44067.
630
631 Wed Jun 18 19:08:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
632
633         * io.c: never add write permission for group or others in
634         SetFileAttributes ().
635
636 2003-06-17  Dick Porter  <dick@ximian.com>
637
638         * io.c (SetFileAttributes): Implement the ReadOnly attribute, and
639         ignore the unsupported ones ("fixes" bug 44977).
640
641 2003-06-17  Lluis Sanchez Gual  <lluis@ximian.com>
642
643         * misc.c: fix bug in _wapi_calc_timeout. It gave wrong values for
644           high ms values (there was an overflow).
645
646 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
647
648         * system.h (struct _WapiSystemInfo ): Fix warnings when using gcc-3.3.
649
650 2003-06-11  Dick Porter  <dick@ximian.com>
651
652         * shared.c: Fix shared directory creation.  Patch from
653         Pablo Baena <pbaena@uol.com.ar>
654
655 2003-06-10  Dick Porter  <dick@ximian.com>
656
657         * atomic.c: Delete the useless compile warning
658
659 2003-06-09  Dick Porter  <dick@ximian.com>
660
661         * daemon.c: Lookup env as a string array.  Fixes bug 44289.  Also
662         make setting the process handle value in the environment actually
663         work.
664
665         * processes.c: Pretty up the process name, if it happens to be
666         "mono" such as when another mono process forks "mono foo.exe"
667
668 2003-06-05  Dick Porter  <dick@ximian.com>
669
670         * processes.c (process_set_current): Don't do an expensive handle
671         search at application startup, check the environment to see if the
672         process handle has already been created.
673
674         * io.c: Don't do an expensive handle search when creating stdin,
675         stdout and stderr handles, just create them all the first time one
676         is requested.
677
678         * wapi-private.h:
679         * shared.c:
680         * shared.h:
681         * handles.c:
682         * handles-private.h:
683         * daemon-messages.h:
684         * daemon-private.h:
685         * daemon.c: Support for "unlimited" number of handles and scratch
686         data.
687
688         Speed up application startup by passing process handle in the
689         environment, rather than let the app scan all handles (which gets
690         really slow when there are more than a few thousand to check.)
691
692         Initialise some structs passed to syscalls, noticed by valgrind.
693         
694
695 2003-05-20  Dick Porter  <dick@ximian.com>
696
697         * io.c (FindFirstFile): Include . files in the glob.  Fixes bug
698         43229.
699
700 2003-05-19  Dick Porter  <dick@ximian.com>
701
702         * threads.c: Set the new thread's stack size to 2M.  Fix needed
703         for BSD, reported by Martin Dvorak <md@9ll.cz>
704
705 2003-05-16  Dick Porter  <dick@ximian.com>
706
707         * io.h:
708         * io.c: Implement GetTempPath()
709
710 2003-05-16  Dick Porter  <dick@ximian.com>
711
712         * processes.c (CreateProcess): Set some error codes
713
714 2003-05-12  Dick Porter  <dick@ximian.com>
715
716         * misc.c (_wapi_calc_timeout): Cope with overflowing tv_nsec.
717         Patch from Martin Dvorak <mdvorak@ninell.cz>.
718
719 2003-05-10  Dick Porter  <dick@ximian.com>
720
721         * io.c (CopyFile): Copy file mode as well as file data.  Based on
722         suggestion by Giuseppe Greco <giuseppe.greco@agamura.com>, bug
723         42706.
724
725 2003-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
726
727         * handles.c: don't call GC_gcollect when creating new handles.
728
729 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
730
731         * handles.c: added some debugging code. Call GC_gcollect
732         before creating a new handle. It makes Lupus' test run smoother and
733         faster (from 62 to 83 request per second). Notice that calling
734         GC_finalizer_notifier if needed (GC_should_invoke_finalizer ()) does
735         not improve nor degrade the performance, so i don't do it.
736
737 2003-05-02  Dick Porter  <dick@ximian.com>
738
739         * sockets.c: Rearrange closesocket() and socket_close_private(),
740         and remember to unref the handle, so we don't leak socket handles.
741         Fix from Pelle Johnsen <pelle.johnsen@mail.dk>
742
743 2003-04-11  Dick Porter  <dick@ximian.com>
744
745         * atomic.h: ARM atomic operations by Malte Hildingson
746         <tds00mahi@tellus.thn.htu.se>
747
748 Tue Apr 8 11:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
749
750         * atomic.h: fix macosx build by "Urs C. Muff" <umuff@quark.com>.
751
752 2003-04-03  Martin Baulig  <martin@ximian.com>
753
754         The following change is conditional to `WITH_INCLUDED_LIBGC'
755         which is not yet enabled by default.
756
757         * threads.c (SuspendThread, ResumeThread): Fully implemented this.
758         (gc_init): New static function; install a signal handler for
759         SIGPWR which is used to suspend threads.  [FIXME: it SIGPWR
760         doesn't exist on all Unix systems, we need to find another
761         signal].
762         (mono_wapi_push_thread_stack): New public function.  Tells the
763         garbage collector about the current stack pointer of a suspended
764         thread.
765
766 2003-04-03  Martin Baulig  <martin@ximian.com>
767
768         * timed-thread.h (TimedThread): Added `suspended_sem',
769         `suspend_count' and `stack_ptr'.
770
771 2003-03-28  Dick Porter  <dick@ximian.com>
772
773         * atomic.h: PPC support gratiously donated to the public domain
774         by John Duncan <jddst19@mac.com>
775
776 2003-03-20  Dick Porter  <dick@ximian.com>
777
778         * sockets.c (_wapi_connect): If connect() fails with EACCES, try
779         setting SO_BROADCAST and connecting again.  Fixes bug 39178.
780
781 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
782
783         * processes.c: included Jerome Laban's patch and call SetLastError when
784         the executable is not found.
785
786 2003-03-03  Dick Porter  <dick@ximian.com>
787
788         * io.c (CreateFile): Try opening directories readonly, so that
789         timestamps can be adjusted.  Patch by Elan Feingold
790         <efeingold@mn.rr.com>.
791
792 2003-02-25  Dick Porter  <dick@ximian.com>
793
794         * shared.c (_wapi_shm_attach): Return a failure code on system
795         call errors, rather than exiting.
796
797 2003-02-21  Dick Porter  <dick@ximian.com>
798
799         * processes.c (GetCurrentProcessId): Use the current process
800         handle to return the process ID, as getpid() is unreliable
801         (linuxthreads gives each thread a different pid).  Fixes bug
802         37550.
803
804 2003-02-21  Dick Porter  <dick@ximian.com>
805
806         * io.c (FindNextFile): Skip over dangling symlinks.  Fixes bug
807         34076.
808
809 2003-02-11  Dick Porter  <dick@ximian.com>
810
811         * timefuncs.h: 
812         * timefuncs.c: Added GetTickCount()
813
814 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
815
816         * error.c: added WSA_EHOSTUNREACH mapping.
817
818 2003-01-26  Miguel de Icaza  <miguel@ximian.com>
819
820         * io.c (SetFileAttributes): This routine is not currently
821         implemented for the general case, but I added a special case to
822         set the executable bit on Linux.
823
824 Wed Jan 15 15:55:40 CET 2003 Paolo Molaro <lupus@ximian.com>
825
826         * sockets.h, daemon.c, io.c: compilation fixes on MacOSX.
827
828 2003-01-08  Dick Porter  <dick@ximian.com>
829
830         * sockets.c: Fixed setting blocking mode to true (fixes bug 36388)
831
832 2002-12-11  Juli Mallett  <jmallett@FreeBSD.org>
833
834         * daemon.c, handles-private.h, handles.c, wapi-private.h:
835         Check for an implementation which says it supports
836         _POSIX_THREAD_PROCESS_SHARED, rather than just one that
837         defines the symbol.  Defined but with a value of -1 still
838         means that it is unsupported.
839
840 2002-12-08  Martin Baulig  <martin@ximian.com>
841
842         * handles.c (_wapi_handle_new): Create new non-shared handles with
843         an initial refcount of 1, not 0.
844
845 2002-11-22  Dietmar Maurer  <dietmar@ximian.com>
846
847         * threads.c (TlsGetValue): removed unnecessary mutex
848
849 2002-11-20  Dick Porter  <dick@ximian.com>
850
851         * timed-thread.c (_wapi_timed_thread_attach): Attached threads
852         need to store their data structure too.
853
854         * threads.c: Make sure the threading data is initialised wherever
855         it is needed
856
857 2002-11-15  Dick Porter  <dick@ximian.com>
858
859         * timed-thread.c: Removed unneeded parameters in
860         _wapi_timed_thread_attach().
861
862         * threads.c: Renamed AttachThread() to make it not look like
863         external API.  Removed unneeded parameters.
864
865 2002-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
866
867         * error.[ch]: added errno_to_WSA (). It displays a warning and return
868         WSASYSCALLFAILURE if there is no error mapping for the given errno,
869
870         * sockets.c: use errno_to_WSA and fixed display of warning for h_errno.
871
872 2002-10-31  Dick Porter  <dick@ximian.com>
873
874         * io.h: 
875         * io.c: Define and use INVALID_FILE_ATTRIBUTES
876
877 2002-10-07  Dick Porter  <dick@ximian.com>
878
879         * timefuncs.c:
880         * daemon.c: Use a more accurate time source for process start and
881         end times.
882
883 2002-10-03  Dick Porter  <dick@ximian.com>
884
885         * daemon.c:
886         * handles.c:
887         * threads.c:  Fixes for freebsd.  Make sure that mutex and condition
888         creation and deletion happen in the process that owns them, when
889         POSIX shared thread objects aren't supported.  This breaks on
890         freebsd, as pthread_t is a pointer to data.
891
892 2002-10-02  Dick Porter  <dick@ximian.com>
893
894         * shared.c: Use mmap() instead of sysv shm for the shared data.
895
896         * wapi-private.h (_WAPI_HANDLE_VERSION): Reset back to 0, for the
897         new system
898
899         * daemon-private.h: 
900         * daemon.c: mmap()ed regions survive fork, so just pass the
901         pointer to _wapi_daemon_main instead of mapping it again.
902
903 2002-10-01  Dick Porter  <dick@ximian.com>
904
905         * timed-thread.c: Kludge for CREATE_SUSPENDED thread creation.
906         Unfortunately libgc uses the same thread suspend technique that I
907         want to, and the two don't mix: libgc will deadlock when it tries
908         to stop the world if a thread has already been suspended by
909         someone else.  Just do the simple suspended create rather than the
910         general purpose thread suspension for now.
911
912         * threads.c: Pass create flags to the timed_thread create call, to
913         implement suspended thread creation.  ResumeThread() partially
914         implemented, to cope with the case where a newly created but
915         suspended thread is launched.
916
917 2002-09-30  Dick Porter  <dick@ximian.com>
918
919         * sockets.c (ioctlsocket): Set non-blocking mode in a better way,
920         with fcntl.
921
922 2002-09-27  Dick Porter  <dick@ximian.com>
923
924         * semaphores.c: Only include semaphore.h if it's present. Patch
925         for BSD from jmmv@hispabsd.org (Julio Merino).
926
927 2002-09-27  Dick Porter  <dick@ximian.com>
928
929         * processes.c: Pass environment and working directory to the
930         daemon when forking.  Don't let argv[0] be duplicated when looking
931         for the program name.  Implement EnumProcessModules (simple
932         version for now, lsof-style later if needed), GetModuleBaseName,
933         {Get,Set}ProcessWorkingSetSize (just faked, because the vm hints
934         aren't available on Linux).
935
936         * process-private.h: Store the process name, and the working set
937         min and max
938
939         * handles.c:
940         * handles-private.h: New functions to store and retrieve an array
941         of strings in the scratch space
942
943         * daemon.c: Don't miss deleting some handles when a client exits
944         (we used to rely on the client doing the final cleanup, but
945         obviously if the client is no longer there the daemon has to do
946         it).
947
948         Process forking now sets the environment and the working
949         directory.
950
951         * io.c: Don't confuse fd 0 with an unassigned handle struct
952
953         * atomic.h: Add a google cache alternative to the msdn URL
954
955 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
956
957         * sockets.c:
958         (_wapi_recvfrom): added ECONNRESET to the switch.
959
960 2002-09-24  Mark Crichton  <crichton@gimp.org>
961
962         * atomic.h: Yea.  On linux, sparc isn't sparc, it's __sparc__.
963         Added to ifdef.
964
965 2002-09-19  Mark Crichton  <crichton@gimp.org>
966
967         * daemon.c, shared.c: Added NEED_LINK_UNLINK for systems that
968         dont have Linux's abstract filesystem for sockets.
969
970 2002-09-19  Mark Crichton  <crichton@gimp.org>
971
972         * atomic.h: Added SPARC atomic asm code.
973         * daemon.c, handles-private.h, handles.c, wapi-private.h:
974         undefined _POSIX_THREAD_PROCESS_SHARED.  This actually exists on
975         Solaris 9, however, the code paths don't seem to work.  More testing
976         on the shared case is *really* needed.
977
978 2002-09-03  Dick Porter  <dick@ximian.com>
979
980         * threads.h: 
981         * threads.c: Removed PosixKillThread(), because it's not in the
982         w32 api
983
984 2002-08-20  Dick Porter  <dick@ximian.com>
985
986         * handles.c (_wapi_handle_scratch_store): Made stored byte lengths
987         multiples of 4 bytes, to keep header structures aligned.  Needed
988         for sparc, at least. (Patch from crichton@gimp.org)
989
990         * handles.c: Removed 'disable_shm' variable (we've defaulted to
991         building with shm enabled for months now)
992
993 2002-08-19  Dick Porter  <dick@ximian.com>
994
995         * daemon.c: Rewrote the poll() loop to use GIOChannels instead,
996         for legacy NeXT-based systems.
997
998 2002-08-12  Dick Porter  <dick@ximian.com>
999
1000         * atomic.h: Rename some parameters to avoid c++ keywords (Patch
1001         from Joseph Wenninger <kde@jowenn.at>)
1002
1003 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
1004
1005         * threads.c: use fast spinlocks by default
1006
1007 2002-08-02  Dick Porter  <dick@ximian.com>
1008
1009         * io.c (GetStdHandle): Add a handle reference when returning a
1010         duplicate console handle.  This fixes the unref_handle errors in
1011         NUnit.
1012
1013 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
1014
1015         * threads.c (TLS_PTHREAD_MUTEX): define this because else some
1016         tests does not work
1017
1018 2002-08-01  Dick Porter  <dick@ximian.com>
1019
1020         * threads.c: Use atomic spinlocks in TLS functions
1021
1022         * mono-spinlock.h:
1023         * Makefile.am: Added mono-spinlock.h
1024
1025 2002-07-21  Jeffrey Stedfast  <fejj@ximian.com>
1026
1027         * daemon-messages.c: #include <sys/types.h> and <sys/sockets.h> -
1028         these are needed for sendmsg() and also for struct msghdr (at
1029         least on Solaris). Solaris still won't build because struct msghdr
1030         doesn't have msg_flags, msg_control, or msg_controllen members.
1031         (CMSG_SPACE): Define for systems that don't have it.
1032         (CMSG_LEN): Same.
1033
1034 2002-07-20  Dick Porter  <dick@ximian.com>
1035
1036         * wapi-private.h:
1037         * io-private.h:
1038         * io.h:
1039         * io.c:
1040         * handles.c: Implemented pipe handles
1041         
1042         * handles.c:
1043         * daemon.c: Fixed bug in handle closing.
1044
1045         * shared.c:
1046         * daemon.c: Forked processes now close all open file descriptors.
1047
1048 Fri Jul 19 19:05:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
1049
1050         * sockets.h, io-layer.h, critical-sections.h: don't include config.h
1051         in header files.
1052
1053 2002-07-19  Martin Baulig  <martin@gnome.org>
1054
1055         * threads.c (ExitThread): Call exit() if no threads has been
1056         created yet.
1057
1058 2002-07-17  Dick Porter  <dick@ximian.com>
1059
1060         * daemon-messages.c: Freebsd fixes from Andreas Kohn
1061         <andreas.kohn@gmx.net>
1062
1063 2002-07-15  Dick Porter  <dick@ximian.com>
1064
1065         * io.c: Removed bogus console_flush() method, that was just cut
1066         and pasted from file_flush when I separated the two handle types.
1067
1068 2002-07-12  Dick Porter  <dick@ximian.com>
1069
1070         * io.c (convert_from_flags): Fixed misunderstanding wrt fcntl
1071         flags.  Fixes bug 27633.
1072
1073 2002-07-12  Dick Porter  <dick@ximian.com>
1074
1075         * wapi-private.h:
1076         * handles.c:
1077         * daemon.c: Use size of sockaddr_un.sun_path from config.h
1078
1079 2002-07-12  Dick Porter  <dick@ximian.com>
1080
1081         * processes.c (CreateProcess): Send stdin, stdout and stderr
1082         handles if the startup info doesnt specify new ones
1083
1084         * io.c (GetStdHandle): Return the same handle when the same
1085         standard handle is requested
1086
1087         * handles.c: Pass file descriptors when forking
1088
1089         * daemon.c: Use supplied file descriptors when forking a new
1090         process
1091
1092         * daemon-messages.h: 
1093         * daemon-messages.c: Pass stdin, stdout and stderr file
1094         descriptors to the daemon (used when forking)
1095
1096 2002-07-11  Miguel de Icaza  <miguel@ximian.com>
1097
1098         * daemon.c (_wapi_daemon_main): Use sizeof
1099         (main_socket_address.sun_path) instead of hardcoded 108 value.
1100
1101         * handles.c (shared_init): Use sizeof
1102         (shared_socket_address.sun_path) instead of hardcoded 108 value.
1103
1104 2002-07-10  Dennis Haney  <davh@davh.dk>
1105
1106         * shared.c:
1107         * handles.c:
1108         * daemon.c: Lots of documentation, some added error checking, and
1109         code readability improvements.
1110
1111         * daemon-messages.h: Add the Error request type to improve error
1112         checking.
1113
1114         * daemon-messages.c: Do a bit more error checking on send() and
1115         recv(), and log errors with a higher severity level.
1116
1117 2002-07-04  Dick Porter  <dick@ximian.com>
1118
1119         * daemon.c (process_process_fork): Fix argument handling, due to
1120         buggy understanding of g_strsplit() behaviour.
1121
1122 2002-07-03  Dick Porter  <dick@ximian.com>
1123
1124         * threads.h:
1125         * threads.c: Implement OpenThread().  Define access-control values
1126         for thread handles.
1127
1128         * wapi.h:
1129         * processes.h:
1130         * access.h:
1131         * Makefile.am: Added access.h, to hold shared access-control
1132         definitions
1133
1134 2002-07-02  Dick Porter  <dick@ximian.com>
1135
1136         * wapi-private.h (_WAPI_HANDLE_VERSION): New protocol version
1137         
1138 2002-07-02  Dick Porter  <dick@ximian.com>
1139
1140         * handles.c (shared_init): Make a second attempt to contact the
1141         daemon if the shared memory attach succeeds, but the connect()
1142         fails. (This copes with the daemon crashing without cleaning up
1143         the shared memory.)
1144
1145         * Makefile.am: 
1146         * daemon-private.h:
1147         * daemon.c:
1148         * shared.c (_wapi_shm_attach): Don't exec() anything when we fork
1149         the daemon, it's now built into the library.
1150
1151 2002-06-25  Dick Porter  <dick@ximian.com>
1152
1153         * handles.c:
1154         * handles-private.h:
1155         * daemon-messages.h:
1156         * daemon.c: Process forking and handle data management
1157
1158         * processes.h:
1159         * process-private.h:
1160         * processes.c: Process forking and other support functions
1161
1162 2002-06-25  Dick Porter  <dick@ximian.com>
1163
1164         * versioninfo.h: PE resource decoding
1165
1166         * unicode.c (_wapi_unicode_to_utf8): g_utf16_to_utf8 doesnt need
1167         to be told the string length
1168
1169         * io.c: Removed the ACTUALLY_DO_UNICODE option.  Fixed some leaks.
1170         Moved _wapi_time_t_to_filetime and the WapiFileTime typedef to
1171         timefuncs.c
1172
1173 2002-06-12  Dick Porter  <dick@ximian.com>
1174
1175         * daemon.c: 
1176         * daemon-messages.c: Handle SIGPIPE in a non-stupid way in the
1177         daemon, if MSG_NOSIGNAL isn't available.  Thanks to Jaroslaw
1178         Kowalski <jarek@atm.com.pl> for pointing out the bogosity.
1179
1180 2002-06-10  Jaroslaw Kowalski <jarek@atm.com.pl>
1181
1182         * sockets.c, daemon-messages.c: Prevent SIGPIPE from being raised
1183         when writing to a closed socket.
1184
1185 2002-06-08  Jeffrey Stedfast  <fejj@ximian.com>
1186
1187         * mono-mutex.c (mono_once): New convenience function for my
1188         previous fix.
1189
1190         * handles.c:
1191         * error.c: 
1192         * critical-sections.c: 
1193         * threads.c: 
1194         * sockets.c: 
1195         * semaphores.c: 
1196         * processes.c: 
1197         * mutexes.c: 
1198         * io.c: 
1199         * events.c: 
1200         * atomic.c: Use mono_once() rather than pthread_once().
1201
1202 2002-06-06  Jeffrey Stedfast  <fejj@ximian.com>
1203
1204         * handles.c (_wapi_handle_new): pthread_once() is not atomic, so
1205         if multiple threads all try to call _wapi_handle_new() before the
1206         shared data has been initialized, it is possible that we could get
1207         into a condition where shared_init() is being executed and later
1208         threads will pass by pthread_once() due to the fact that it has
1209         already been called and so therefor will attempt to use the shared
1210         data before it has been completely initialized. If we instead use
1211         a standard mutex locking mechanism around shared_init(), we can
1212         avoid the situation entirely. By wrapping the mutex locking in a
1213         check to see if we've already initialized the data, we can even
1214         avoid wasting resources by having to lock/unlock the mutex in any
1215         later calls (the only time we'd have to worry about
1216         locking/unlocking is the initial race to call shared_init() at
1217         startup).
1218
1219 Sat Jun 1 13:27:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
1220
1221         * atomic.h: inline asm fixes from Dennis Haney (davh@davh.dk).
1222
1223 Fri May 31 16:21:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
1224
1225         * daemon.c, handles.c: rename "sun" local var since it's apparently
1226         a #define on Solaris.
1227
1228 Fri May 31 15:40:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
1229
1230         * daemon-messages.c: work-around MSG_NOSIGNAL missing on some
1231         platforms.
1232
1233 2002-05-15  Dick Porter  <dick@ximian.com>
1234
1235         * wait.c: Fix a deadlock in WaitForMultipleObjects
1236
1237 2002-05-14  Dick Porter  <dick@ximian.com>
1238
1239         * io.c: Fix a cut&paste error, found by
1240         Jaroslaw Kowalski <jarek@atm.com.pl>
1241
1242 2002-05-10  Dan Lewis  <dihlewis@yahoo.co.uk>
1243
1244         * io.c: Nasty typo.
1245
1246 2002-05-09  Dick Porter  <dick@ximian.com>
1247
1248         * threads.c: 
1249         * semaphores.c: 
1250         * processes.c: 
1251         * mutexes.c: 
1252         * handles-private.h: 
1253         * events.c: 
1254         * Makefile.am: Remove now-unused file wait-private.h
1255
1256 2002-05-08  Dick Porter  <dick@ximian.com>
1257
1258         * shared.c: Better error messages, and report when daemon
1259         connection fails rather than blocking forever.  Do some more
1260         shared memory sanity checking.
1261
1262         * handles.c: Better error messages when connecting to shared
1263         memory and the handle daemon.  Fall back to non-shared handles if
1264         an error occurs.  Set the default back to 'shared handles'.  Fix a
1265         crashing bug in scratch space allocation that mangled the block
1266         headers.
1267
1268 2002-05-07  Miguel de Icaza  <miguel@ximian.com>
1269
1270         * handles.c (shared_init): Disable SHM for now, people have too
1271         many problems with this, and the diagnostics are not helping.
1272
1273 2002-05-06  Dan Lewis  <dihlewis@yahoo.co.uk>
1274
1275         * io.c: CreateFile sets win32 last error.
1276
1277 2002-05-05  Dick Porter  <dick@ximian.com>
1278
1279         * wapi-private.h: 
1280         * handles-private.h:
1281         * io.c: 
1282         * io-private.h:
1283         * mutexes.c: 
1284         * mutex-private.h: 
1285         * processes.c: 
1286         * process-private.h: 
1287         * semaphores.c: 
1288         * semaphore-private.h: 
1289         * sockets.c: 
1290         * socket-private.h: 
1291         * events.c: 
1292         * event-private.h: Simplify the WapiHandleOps struct: take out all
1293         the file-specific entries, leaving just the items that operate on
1294         handles themselves.  Split the close operation into shared and
1295         private parts: shared close is called by the daemon.
1296
1297         * handles.c: As above, but also pass handle allocation, ref and
1298         unref operations to the daemon.  Populate the handle_ops array at
1299         compile time, because the daemon needs to call ops on handles too.
1300         Don't bother to track open handle counts any more, the daemon does
1301         that.
1302         
1303         * threads.c: 
1304         * thread-private.h: As above, but also make the thread data
1305         handle-private.
1306
1307         * shared.c: Fork a handle daemon if the calling process created
1308         the shared memory segment.
1309
1310         * daemon.c:
1311         * daemon-messages.c:
1312         * daemon-messages.h:
1313         * Makefile.am: Build a daemon to manage handle allocation and
1314         destruction without needing to lock the shared memory
1315
1316 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
1317
1318         * atomic.c: Changed to use a normal mutex rather than a spinlock
1319         since a lot of platforms seem to not have them :\
1320
1321 2002-04-30  Dick Porter  <dick@ximian.com>
1322
1323         * Completely rewrote the handle waiting code: removed the helper
1324         thread and its attendant complexity.  All handle waiting is now
1325         abstracted into the WaitForSingleObject() and
1326         WaitForMultipleObjects() functions.
1327
1328         * Implemented inter-process sharing of handles using sysv shared
1329         memory.  This makes handles even more opaque, with a handle now
1330         just an index into an array.
1331         
1332 2002-04-25  Dan Lewis  <dihlewis@yahoo.co.uk>
1333
1334         * io.c: unitialized pointer in GetCurrentDirectory.
1335
1336 Sat Apr 20 13:37:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
1337
1338         * threads.c: destroy the mutex at thread destruction
1339         (if/when thread destruction code will be actually called).
1340         When protecting a tls data pointer from the gc, use also the 
1341         thread id in the key.
1342         
1343 Wed Apr 17 18:36:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
1344
1345         * timed-thread.c: avoid race condition when setting the thread to
1346         detached.
1347
1348 2002-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1349
1350         * jit.h: to more #include lines to avoid breaking compilation
1351         under windows when upgrading mingw and w32api to version
1352         1.3 (thanks Dick!).
1353
1354 2002-04-16  Dick Porter  <dick@ximian.com>
1355
1356         * atomic.h: Explanatory comment about lack of 80386 support
1357
1358 2002-04-15  Dick Porter  <dick@ximian.com>
1359
1360         * atomic.h: use xaddl for InterlockedIncrement() and
1361         InterlockedDecrement().  Use cmpxchgl in a loop for
1362         InterlockedExchange() and InterlockedExchangePointer().
1363
1364 Mon Apr 15 13:31:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
1365
1366         * unicode.c: fix unicode_len() to not access uninitialized memory
1367         (and updated to conform to mono code style).
1368
1369 Fri Mar 29 17:15:11 CET 2002 Paolo Molaro <lupus@ximian.com>
1370
1371         * io.c: EEXISTS is ignored for directory creation.
1372         * mono-mutex.h: remove silly "pragma }" that emacs users insert
1373         because they use a broken editor:-)
1374
1375 2002-03-28  Dick Porter  <dick@ximian.com>
1376
1377         * sockets.h: 
1378         * sockets.c: 
1379         * io.c: 
1380         * handles.h: 
1381         * handles.c: Warning cleanups
1382
1383 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
1384
1385         * unicode.h, unicode.c: changed to gunichar2
1386         * io.h, io.c: changed strings to gunichar2*, added
1387         SetFileAttributes(), GetCurrentDirectory(), SetCurrentDirectory(),
1388         some fixes to FindFirstFile() and friends.
1389
1390 2002-03-26  Dick Porter  <dick@ximian.com>
1391
1392         * types.h: Implement the large integer struct
1393
1394         * timefuncs.h:
1395         * timefuncs.c: Dummy functions that don't yet implement
1396         QueryPerformanceCounter() and QueryPerformanceFrequency()
1397
1398         * threads.h:
1399         * threads.c: Implement SleepEx()
1400
1401         * system.h:
1402         * system.c: Beginnings of GetSystemInfo()
1403
1404         * mono-mutex.c (pthread_mutex_timedlock): Fix a ms/ns conversion
1405         thinko
1406
1407         * context.h:
1408         * context.c: Dummy function that doesnt yet implement
1409         GetThreadContext()
1410
1411         * atomic.h: 
1412         * atomic.c: Interlocked functions
1413
1414 Mon Mar 25 13:01:40 CET 2002 Paolo Molaro <lupus@ximian.com>
1415
1416         * threads.c: use a gc-safe hash table to store tls pointers.
1417
1418 2002-03-22  Dick Porter  <dick@ximian.com>
1419
1420         * threads.c: Fix a race condition where a thread can start and
1421         exit before the handle has been properly initialised (no reason
1422         why the handle couldn't be initialised beforehand, so do so)
1423
1424         Fix a ms to ns conversion magnitude thinko.
1425
1426 2002-03-21  Dick Porter  <dick@ximian.com>
1427
1428         * semaphores.c: Fix a problem when waiting for one or more
1429         semaphores, and another semaphore is Released (all waiting
1430         semaphores assumed they were signalled)
1431
1432 2002-03-29  Dan Lewis <dihlewis@yahoo.co.uk>
1433
1434         * io.h, io.c, uglify.h: added MoveFile, CopyFile, CreateDirectory,
1435         RemoveDirectory, GetFileAttributes, GetFileAttributesEx
1436
1437 2002-03-19  Dietmar Maurer  <dietmar@ximian.com>
1438
1439         * threads.c (Sleep): bug fix: 1ms == 1000000ns
1440
1441 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
1442
1443         * io.h, io.c, events.c, mutexes.c, semaphores.c, sockets.c,
1444         threads.c, io.c: added flush method to handles.
1445
1446         * io.c: FlushFileBuffers() and FindFirstFile() functions.
1447
1448 Thu Mar 7 17:21:52 CET 2002 Paolo Molaro <lupus@ximian.com>
1449
1450         * threads.c, timed-thread.c, wait.c: Boehm-GC anable.
1451
1452 2002-02-20  Dick Porter  <dick@ximian.com>
1453
1454         * io-layer.h: Always build without cygwin support on windows
1455
1456 Mon Feb 18 15:50:59 CET 2002 Paolo Molaro <lupus@ximian.com>
1457
1458         * sockets.c: #undef DEBUG.
1459
1460 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
1461
1462         * io-layer.h: conditionally include sys/filio.h and sys/sockio.h
1463         for FIONBIO, FIONREAD, and SIOCATMARK.
1464
1465 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
1466
1467         * sockets.c: conditionally include sys/filio.h and sys/sockio.h
1468         for FIONBIO, FIONREAD, and SIOCATMARK.
1469
1470 2002-02-13  Dick Porter  <dick@ximian.com>
1471
1472         * sockets.c: Implement shutdown and select
1473
1474 2002-02-13  Jeffrey Stedfast  <fejj@ximian.com>
1475
1476         * mono-mutex.[c,h]: New source files that thinly wrap all pthread
1477         functions that take pthread_mutex_t and/or pthread_mutexattr_t
1478         arguments for the sake of portability. Implements recursive
1479         mutexes and pthread_mutex_timedlock.
1480
1481         * critical-sections.c:
1482         * events.c:
1483         * handles.c:
1484         * mutexes.c:
1485         * semaphores.c:
1486         * threads.c:
1487         * timed-thread.c:
1488         * wait.c: Use the mono-mutex wrapper portability functions/macros.
1489
1490         * pthread-compat.[c,h]: Replaced by mono-mutex.[c,h]
1491
1492 2002-01-23  Dick Porter  <dick@ximian.com>
1493
1494         * sockets.c: Networking support, mostly wrapping BSD socket APIs
1495         with handle code, and translating errno into w32 error codes.
1496
1497         * macros.h: Some w32 macros used with the socket support
1498
1499         * error.c: Implemented GetLastError() and SetLastError()
1500
1501         * Makefile.am: Added sockets, with kludge to override some symbols
1502
1503 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
1504
1505         * unicode.c (_wapi_unicode_to_utf8): byteswap UTF16 strings before
1506         passing them to iconv
1507         (_wapi_unicode_to_utf8): only swap bytes on LE systems, remove bug
1508         from previous commit.
1509
1510 2001-12-11  Dick Porter  <dick@ximian.com>
1511
1512         * io.c: Implement DeleteFile(), GetFileTime(), SetFileTime() and
1513         FileTimeToSystemTime().
1514
1515         * unicode.c (unicode_len): Nasty way of finding length of unicode
1516         string with embedded NULLs (counts until two NULLs together).
1517
1518         * mutexes.c (mutex_close): 
1519         * events.c (event_close): Release the internal pthreads resources
1520
1521 2001-11-26  Dick Porter  <dick@ximian.com>
1522
1523         * critical-sections.c:
1524         * events.c:
1525         * handles.c:
1526         * io.c:
1527         * mutexes.c:
1528         * semaphores.c:
1529         * threads.c:
1530         * timed-thread.c:
1531         * wait.c: turn off DEBUG messages
1532
1533 2001-11-22  Dick Porter  <dick@ximian.com>
1534
1535         * handles.c (SignalObjectAndWait): Implement
1536
1537         * wait.c (WaitForSingleObject): Fix case where timeout == 0
1538
1539         * threads.c:
1540         * semaphores.c:
1541         * mutexes.c:
1542         * io.c:
1543         * events.c: Support for SignalObjectAndWait
1544         
1545 2001-11-21  Dick Porter  <dick@ximian.com>
1546
1547         * events.c:
1548         * handles.c:
1549         * mutexes.c:
1550         * semaphores.c:
1551         * threads.c:
1552         * wait.c: Reliable method of returning which handle was signalled
1553         on return from WaitForMultipleObjects().
1554
1555 2001-11-21  Dick Porter  <dick@ximian.com>
1556
1557         * events.c: Implement events
1558
1559 2001-11-15  Dick Porter  <dick@ximian.com>
1560
1561         * mutexes.c: Implement mutexes
1562
1563         * threads.c: 
1564         * semaphores.c: 
1565         * misc.c: Factor out some common code
1566
1567 2001-11-13  Dick Porter  <dick@ximian.com>
1568
1569         * threads.c: Implement TLS.  Implement GetCurrentThreadId(), and
1570         GetCurrentThread() by maintaining a hash of thread handles.
1571
1572         * threads.h: Define thread and process creation flags
1573
1574 2001-11-12  Dick Porter  <dick@ximian.com>
1575
1576         * critical-sections.c: Implement critical sections
1577
1578 2001-11-12  Dick Porter  <dick@ximian.com>
1579
1580         * semaphores.c: Implement semaphores
1581
1582         * wait.c (wait_for_item): Maintain a wait count rather than count
1583         signalled booleans.
1584
1585         * threads.c (thread_wait_multiple): Don't lock the wait item, that
1586         will block other wait threads
1587
1588 2001-11-11  Dick Porter  <dick@ximian.com>
1589
1590         * Makefile.am: Rename some automake variables
1591         (from Nick Drochak <ndrochak@gol.com>)
1592
1593 2001-11-10  Dick Porter  <dick@ximian.com>
1594
1595         * Makefile.am (libwapiincludedir): Fix include destination
1596
1597         * .cvsignore: Ignore generated files
1598
1599 2001-11-10  Dietmar Maurer  <dietmar@ximian.com>
1600
1601         * pthread-compat.c: added some include files to make it compile on
1602         linux.
1603
1604 2001-11-08  Dick Porter  <dick@ximian.com>
1605
1606         * Initial checkin.
1607
1608         This is a library emulating the win32 threading and IO API.