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