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