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