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