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