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