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