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