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