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