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