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