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