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