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