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