2002-08-02 Dick Porter <dick@ximian.com>
[mono.git] / mono / io-layer / ChangeLog
1 2002-08-02  Dick Porter  <dick@ximian.com>
2
3         * io.c (GetStdHandle): Add a handle reference when returning a
4         duplicate console handle.  This fixes the unref_handle errors in
5         NUnit.
6
7 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
8
9         * threads.c (TLS_PTHREAD_MUTEX): define this because else some
10         tests does not work
11
12 2002-08-01  Dick Porter  <dick@ximian.com>
13
14         * threads.c: Use atomic spinlocks in TLS functions
15
16         * mono-spinlock.h:
17         * Makefile.am: Added mono-spinlock.h
18
19 2002-07-21  Jeffrey Stedfast  <fejj@ximian.com>
20
21         * daemon-messages.c: #include <sys/types.h> and <sys/sockets.h> -
22         these are needed for sendmsg() and also for struct msghdr (at
23         least on Solaris). Solaris still won't build because struct msghdr
24         doesn't have msg_flags, msg_control, or msg_controllen members.
25         (CMSG_SPACE): Define for systems that don't have it.
26         (CMSG_LEN): Same.
27
28 2002-07-20  Dick Porter  <dick@ximian.com>
29
30         * wapi-private.h:
31         * io-private.h:
32         * io.h:
33         * io.c:
34         * handles.c: Implemented pipe handles
35         
36         * handles.c:
37         * daemon.c: Fixed bug in handle closing.
38
39         * shared.c:
40         * daemon.c: Forked processes now close all open file descriptors.
41
42 Fri Jul 19 19:05:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
43
44         * sockets.h, io-layer.h, critical-sections.h: don't include config.h
45         in header files.
46
47 2002-07-19  Martin Baulig  <martin@gnome.org>
48
49         * threads.c (ExitThread): Call exit() if no threads has been
50         created yet.
51
52 2002-07-17  Dick Porter  <dick@ximian.com>
53
54         * daemon-messages.c: Freebsd fixes from Andreas Kohn
55         <andreas.kohn@gmx.net>
56
57 2002-07-15  Dick Porter  <dick@ximian.com>
58
59         * io.c: Removed bogus console_flush() method, that was just cut
60         and pasted from file_flush when I separated the two handle types.
61
62 2002-07-12  Dick Porter  <dick@ximian.com>
63
64         * io.c (convert_from_flags): Fixed misunderstanding wrt fcntl
65         flags.  Fixes bug 27633.
66
67 2002-07-12  Dick Porter  <dick@ximian.com>
68
69         * wapi-private.h:
70         * handles.c:
71         * daemon.c: Use size of sockaddr_un.sun_path from config.h
72
73 2002-07-12  Dick Porter  <dick@ximian.com>
74
75         * processes.c (CreateProcess): Send stdin, stdout and stderr
76         handles if the startup info doesnt specify new ones
77
78         * io.c (GetStdHandle): Return the same handle when the same
79         standard handle is requested
80
81         * handles.c: Pass file descriptors when forking
82
83         * daemon.c: Use supplied file descriptors when forking a new
84         process
85
86         * daemon-messages.h: 
87         * daemon-messages.c: Pass stdin, stdout and stderr file
88         descriptors to the daemon (used when forking)
89
90 2002-07-11  Miguel de Icaza  <miguel@ximian.com>
91
92         * daemon.c (_wapi_daemon_main): Use sizeof
93         (main_socket_address.sun_path) instead of hardcoded 108 value.
94
95         * handles.c (shared_init): Use sizeof
96         (shared_socket_address.sun_path) instead of hardcoded 108 value.
97
98 2002-07-10  Dennis Haney  <davh@davh.dk>
99
100         * shared.c:
101         * handles.c:
102         * daemon.c: Lots of documentation, some added error checking, and
103         code readability improvements.
104
105         * daemon-messages.h: Add the Error request type to improve error
106         checking.
107
108         * daemon-messages.c: Do a bit more error checking on send() and
109         recv(), and log errors with a higher severity level.
110
111 2002-07-04  Dick Porter  <dick@ximian.com>
112
113         * daemon.c (process_process_fork): Fix argument handling, due to
114         buggy understanding of g_strsplit() behaviour.
115
116 2002-07-03  Dick Porter  <dick@ximian.com>
117
118         * threads.h:
119         * threads.c: Implement OpenThread().  Define access-control values
120         for thread handles.
121
122         * wapi.h:
123         * processes.h:
124         * access.h:
125         * Makefile.am: Added access.h, to hold shared access-control
126         definitions
127
128 2002-07-02  Dick Porter  <dick@ximian.com>
129
130         * wapi-private.h (_WAPI_HANDLE_VERSION): New protocol version
131         
132 2002-07-02  Dick Porter  <dick@ximian.com>
133
134         * handles.c (shared_init): Make a second attempt to contact the
135         daemon if the shared memory attach succeeds, but the connect()
136         fails. (This copes with the daemon crashing without cleaning up
137         the shared memory.)
138
139         * Makefile.am: 
140         * daemon-private.h:
141         * daemon.c:
142         * shared.c (_wapi_shm_attach): Don't exec() anything when we fork
143         the daemon, it's now built into the library.
144
145 2002-06-25  Dick Porter  <dick@ximian.com>
146
147         * handles.c:
148         * handles-private.h:
149         * daemon-messages.h:
150         * daemon.c: Process forking and handle data management
151
152         * processes.h:
153         * process-private.h:
154         * processes.c: Process forking and other support functions
155
156 2002-06-25  Dick Porter  <dick@ximian.com>
157
158         * versioninfo.h: PE resource decoding
159
160         * unicode.c (_wapi_unicode_to_utf8): g_utf16_to_utf8 doesnt need
161         to be told the string length
162
163         * io.c: Removed the ACTUALLY_DO_UNICODE option.  Fixed some leaks.
164         Moved _wapi_time_t_to_filetime and the WapiFileTime typedef to
165         timefuncs.c
166
167 2002-06-12  Dick Porter  <dick@ximian.com>
168
169         * daemon.c: 
170         * daemon-messages.c: Handle SIGPIPE in a non-stupid way in the
171         daemon, if MSG_NOSIGNAL isn't available.  Thanks to Jaroslaw
172         Kowalski <jarek@atm.com.pl> for pointing out the bogosity.
173
174 2002-06-10  Jaroslaw Kowalski <jarek@atm.com.pl>
175
176         * sockets.c, daemon-messages.c: Prevent SIGPIPE from being raised
177         when writing to a closed socket.
178
179 2002-06-08  Jeffrey Stedfast  <fejj@ximian.com>
180
181         * mono-mutex.c (mono_once): New convenience function for my
182         previous fix.
183
184         * handles.c:
185         * error.c: 
186         * critical-sections.c: 
187         * threads.c: 
188         * sockets.c: 
189         * semaphores.c: 
190         * processes.c: 
191         * mutexes.c: 
192         * io.c: 
193         * events.c: 
194         * atomic.c: Use mono_once() rather than pthread_once().
195
196 2002-06-06  Jeffrey Stedfast  <fejj@ximian.com>
197
198         * handles.c (_wapi_handle_new): pthread_once() is not atomic, so
199         if multiple threads all try to call _wapi_handle_new() before the
200         shared data has been initialized, it is possible that we could get
201         into a condition where shared_init() is being executed and later
202         threads will pass by pthread_once() due to the fact that it has
203         already been called and so therefor will attempt to use the shared
204         data before it has been completely initialized. If we instead use
205         a standard mutex locking mechanism around shared_init(), we can
206         avoid the situation entirely. By wrapping the mutex locking in a
207         check to see if we've already initialized the data, we can even
208         avoid wasting resources by having to lock/unlock the mutex in any
209         later calls (the only time we'd have to worry about
210         locking/unlocking is the initial race to call shared_init() at
211         startup).
212
213 Sat Jun 1 13:27:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
214
215         * atomic.h: inline asm fixes from Dennis Haney (davh@davh.dk).
216
217 Fri May 31 16:21:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
218
219         * daemon.c, handles.c: rename "sun" local var since it's apparently
220         a #define on Solaris.
221
222 Fri May 31 15:40:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
223
224         * daemon-messages.c: work-around MSG_NOSIGNAL missing on some
225         platforms.
226
227 2002-05-15  Dick Porter  <dick@ximian.com>
228
229         * wait.c: Fix a deadlock in WaitForMultipleObjects
230
231 2002-05-14  Dick Porter  <dick@ximian.com>
232
233         * io.c: Fix a cut&paste error, found by
234         Jaroslaw Kowalski <jarek@atm.com.pl>
235
236 2002-05-10  Dan Lewis  <dihlewis@yahoo.co.uk>
237
238         * io.c: Nasty typo.
239
240 2002-05-09  Dick Porter  <dick@ximian.com>
241
242         * threads.c: 
243         * semaphores.c: 
244         * processes.c: 
245         * mutexes.c: 
246         * handles-private.h: 
247         * events.c: 
248         * Makefile.am: Remove now-unused file wait-private.h
249
250 2002-05-08  Dick Porter  <dick@ximian.com>
251
252         * shared.c: Better error messages, and report when daemon
253         connection fails rather than blocking forever.  Do some more
254         shared memory sanity checking.
255
256         * handles.c: Better error messages when connecting to shared
257         memory and the handle daemon.  Fall back to non-shared handles if
258         an error occurs.  Set the default back to 'shared handles'.  Fix a
259         crashing bug in scratch space allocation that mangled the block
260         headers.
261
262 2002-05-07  Miguel de Icaza  <miguel@ximian.com>
263
264         * handles.c (shared_init): Disable SHM for now, people have too
265         many problems with this, and the diagnostics are not helping.
266
267 2002-05-06  Dan Lewis  <dihlewis@yahoo.co.uk>
268
269         * io.c: CreateFile sets win32 last error.
270
271 2002-05-05  Dick Porter  <dick@ximian.com>
272
273         * wapi-private.h: 
274         * handles-private.h:
275         * io.c: 
276         * io-private.h:
277         * mutexes.c: 
278         * mutex-private.h: 
279         * processes.c: 
280         * process-private.h: 
281         * semaphores.c: 
282         * semaphore-private.h: 
283         * sockets.c: 
284         * socket-private.h: 
285         * events.c: 
286         * event-private.h: Simplify the WapiHandleOps struct: take out all
287         the file-specific entries, leaving just the items that operate on
288         handles themselves.  Split the close operation into shared and
289         private parts: shared close is called by the daemon.
290
291         * handles.c: As above, but also pass handle allocation, ref and
292         unref operations to the daemon.  Populate the handle_ops array at
293         compile time, because the daemon needs to call ops on handles too.
294         Don't bother to track open handle counts any more, the daemon does
295         that.
296         
297         * threads.c: 
298         * thread-private.h: As above, but also make the thread data
299         handle-private.
300
301         * shared.c: Fork a handle daemon if the calling process created
302         the shared memory segment.
303
304         * daemon.c:
305         * daemon-messages.c:
306         * daemon-messages.h:
307         * Makefile.am: Build a daemon to manage handle allocation and
308         destruction without needing to lock the shared memory
309
310 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
311
312         * atomic.c: Changed to use a normal mutex rather than a spinlock
313         since a lot of platforms seem to not have them :\
314
315 2002-04-30  Dick Porter  <dick@ximian.com>
316
317         * Completely rewrote the handle waiting code: removed the helper
318         thread and its attendant complexity.  All handle waiting is now
319         abstracted into the WaitForSingleObject() and
320         WaitForMultipleObjects() functions.
321
322         * Implemented inter-process sharing of handles using sysv shared
323         memory.  This makes handles even more opaque, with a handle now
324         just an index into an array.
325         
326 2002-04-25  Dan Lewis  <dihlewis@yahoo.co.uk>
327
328         * io.c: unitialized pointer in GetCurrentDirectory.
329
330 Sat Apr 20 13:37:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
331
332         * threads.c: destroy the mutex at thread destruction
333         (if/when thread destruction code will be actually called).
334         When protecting a tls data pointer from the gc, use also the 
335         thread id in the key.
336         
337 Wed Apr 17 18:36:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
338
339         * timed-thread.c: avoid race condition when setting the thread to
340         detached.
341
342 2002-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
343
344         * jit.h: to more #include lines to avoid breaking compilation
345         under windows when upgrading mingw and w32api to version
346         1.3 (thanks Dick!).
347
348 2002-04-16  Dick Porter  <dick@ximian.com>
349
350         * atomic.h: Explanatory comment about lack of 80386 support
351
352 2002-04-15  Dick Porter  <dick@ximian.com>
353
354         * atomic.h: use xaddl for InterlockedIncrement() and
355         InterlockedDecrement().  Use cmpxchgl in a loop for
356         InterlockedExchange() and InterlockedExchangePointer().
357
358 Mon Apr 15 13:31:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
359
360         * unicode.c: fix unicode_len() to not access uninitialized memory
361         (and updated to conform to mono code style).
362
363 Fri Mar 29 17:15:11 CET 2002 Paolo Molaro <lupus@ximian.com>
364
365         * io.c: EEXISTS is ignored for directory creation.
366         * mono-mutex.h: remove silly "pragma }" that emacs users insert
367         because they use a broken editor:-)
368
369 2002-03-28  Dick Porter  <dick@ximian.com>
370
371         * sockets.h: 
372         * sockets.c: 
373         * io.c: 
374         * handles.h: 
375         * handles.c: Warning cleanups
376
377 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
378
379         * unicode.h, unicode.c: changed to gunichar2
380         * io.h, io.c: changed strings to gunichar2*, added
381         SetFileAttributes(), GetCurrentDirectory(), SetCurrentDirectory(),
382         some fixes to FindFirstFile() and friends.
383
384 2002-03-26  Dick Porter  <dick@ximian.com>
385
386         * types.h: Implement the large integer struct
387
388         * timefuncs.h:
389         * timefuncs.c: Dummy functions that don't yet implement
390         QueryPerformanceCounter() and QueryPerformanceFrequency()
391
392         * threads.h:
393         * threads.c: Implement SleepEx()
394
395         * system.h:
396         * system.c: Beginnings of GetSystemInfo()
397
398         * mono-mutex.c (pthread_mutex_timedlock): Fix a ms/ns conversion
399         thinko
400
401         * context.h:
402         * context.c: Dummy function that doesnt yet implement
403         GetThreadContext()
404
405         * atomic.h: 
406         * atomic.c: Interlocked functions
407
408 Mon Mar 25 13:01:40 CET 2002 Paolo Molaro <lupus@ximian.com>
409
410         * threads.c: use a gc-safe hash table to store tls pointers.
411
412 2002-03-22  Dick Porter  <dick@ximian.com>
413
414         * threads.c: Fix a race condition where a thread can start and
415         exit before the handle has been properly initialised (no reason
416         why the handle couldn't be initialised beforehand, so do so)
417
418         Fix a ms to ns conversion magnitude thinko.
419
420 2002-03-21  Dick Porter  <dick@ximian.com>
421
422         * semaphores.c: Fix a problem when waiting for one or more
423         semaphores, and another semaphore is Released (all waiting
424         semaphores assumed they were signalled)
425
426 2002-03-29  Dan Lewis <dihlewis@yahoo.co.uk>
427
428         * io.h, io.c, uglify.h: added MoveFile, CopyFile, CreateDirectory,
429         RemoveDirectory, GetFileAttributes, GetFileAttributesEx
430
431 2002-03-19  Dietmar Maurer  <dietmar@ximian.com>
432
433         * threads.c (Sleep): bug fix: 1ms == 1000000ns
434
435 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
436
437         * io.h, io.c, events.c, mutexes.c, semaphores.c, sockets.c,
438         threads.c, io.c: added flush method to handles.
439
440         * io.c: FlushFileBuffers() and FindFirstFile() functions.
441
442 Thu Mar 7 17:21:52 CET 2002 Paolo Molaro <lupus@ximian.com>
443
444         * threads.c, timed-thread.c, wait.c: Boehm-GC anable.
445
446 2002-02-20  Dick Porter  <dick@ximian.com>
447
448         * io-layer.h: Always build without cygwin support on windows
449
450 Mon Feb 18 15:50:59 CET 2002 Paolo Molaro <lupus@ximian.com>
451
452         * sockets.c: #undef DEBUG.
453
454 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
455
456         * io-layer.h: conditionally include sys/filio.h and sys/sockio.h
457         for FIONBIO, FIONREAD, and SIOCATMARK.
458
459 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
460
461         * sockets.c: conditionally include sys/filio.h and sys/sockio.h
462         for FIONBIO, FIONREAD, and SIOCATMARK.
463
464 2002-02-13  Dick Porter  <dick@ximian.com>
465
466         * sockets.c: Implement shutdown and select
467
468 2002-02-13  Jeffrey Stedfast  <fejj@ximian.com>
469
470         * mono-mutex.[c,h]: New source files that thinly wrap all pthread
471         functions that take pthread_mutex_t and/or pthread_mutexattr_t
472         arguments for the sake of portability. Implements recursive
473         mutexes and pthread_mutex_timedlock.
474
475         * critical-sections.c:
476         * events.c:
477         * handles.c:
478         * mutexes.c:
479         * semaphores.c:
480         * threads.c:
481         * timed-thread.c:
482         * wait.c: Use the mono-mutex wrapper portability functions/macros.
483
484         * pthread-compat.[c,h]: Replaced by mono-mutex.[c,h]
485
486 2002-01-23  Dick Porter  <dick@ximian.com>
487
488         * sockets.c: Networking support, mostly wrapping BSD socket APIs
489         with handle code, and translating errno into w32 error codes.
490
491         * macros.h: Some w32 macros used with the socket support
492
493         * error.c: Implemented GetLastError() and SetLastError()
494
495         * Makefile.am: Added sockets, with kludge to override some symbols
496
497 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
498
499         * unicode.c (_wapi_unicode_to_utf8): byteswap UTF16 strings before
500         passing them to iconv
501         (_wapi_unicode_to_utf8): only swap bytes on LE systems, remove bug
502         from previous commit.
503
504 2001-12-11  Dick Porter  <dick@ximian.com>
505
506         * io.c: Implement DeleteFile(), GetFileTime(), SetFileTime() and
507         FileTimeToSystemTime().
508
509         * unicode.c (unicode_len): Nasty way of finding length of unicode
510         string with embedded NULLs (counts until two NULLs together).
511
512         * mutexes.c (mutex_close): 
513         * events.c (event_close): Release the internal pthreads resources
514
515 2001-11-26  Dick Porter  <dick@ximian.com>
516
517         * critical-sections.c:
518         * events.c:
519         * handles.c:
520         * io.c:
521         * mutexes.c:
522         * semaphores.c:
523         * threads.c:
524         * timed-thread.c:
525         * wait.c: turn off DEBUG messages
526
527 2001-11-22  Dick Porter  <dick@ximian.com>
528
529         * handles.c (SignalObjectAndWait): Implement
530
531         * wait.c (WaitForSingleObject): Fix case where timeout == 0
532
533         * threads.c:
534         * semaphores.c:
535         * mutexes.c:
536         * io.c:
537         * events.c: Support for SignalObjectAndWait
538         
539 2001-11-21  Dick Porter  <dick@ximian.com>
540
541         * events.c:
542         * handles.c:
543         * mutexes.c:
544         * semaphores.c:
545         * threads.c:
546         * wait.c: Reliable method of returning which handle was signalled
547         on return from WaitForMultipleObjects().
548
549 2001-11-21  Dick Porter  <dick@ximian.com>
550
551         * events.c: Implement events
552
553 2001-11-15  Dick Porter  <dick@ximian.com>
554
555         * mutexes.c: Implement mutexes
556
557         * threads.c: 
558         * semaphores.c: 
559         * misc.c: Factor out some common code
560
561 2001-11-13  Dick Porter  <dick@ximian.com>
562
563         * threads.c: Implement TLS.  Implement GetCurrentThreadId(), and
564         GetCurrentThread() by maintaining a hash of thread handles.
565
566         * threads.h: Define thread and process creation flags
567
568 2001-11-12  Dick Porter  <dick@ximian.com>
569
570         * critical-sections.c: Implement critical sections
571
572 2001-11-12  Dick Porter  <dick@ximian.com>
573
574         * semaphores.c: Implement semaphores
575
576         * wait.c (wait_for_item): Maintain a wait count rather than count
577         signalled booleans.
578
579         * threads.c (thread_wait_multiple): Don't lock the wait item, that
580         will block other wait threads
581
582 2001-11-11  Dick Porter  <dick@ximian.com>
583
584         * Makefile.am: Rename some automake variables
585         (from Nick Drochak <ndrochak@gol.com>)
586
587 2001-11-10  Dick Porter  <dick@ximian.com>
588
589         * Makefile.am (libwapiincludedir): Fix include destination
590
591         * .cvsignore: Ignore generated files
592
593 2001-11-10  Dietmar Maurer  <dietmar@ximian.com>
594
595         * pthread-compat.c: added some include files to make it compile on
596         linux.
597
598 2001-11-08  Dick Porter  <dick@ximian.com>
599
600         * Initial checkin.
601
602         This is a library emulating the win32 threading and IO API.
603
604