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