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