On Fri, 2006-12-01 at 15:03 -0300, Leonardo Pereira wrote: > I think he isn't, Mach Exceptions are just another aproach of signals, > they were used on Mach_US and Lites to implement Unix-compatible > signals. The unique 'problem' is that Mach Exceptions handle not only > process but also threads, so, this is a very fundamental difference.
No, both you and Igor are missing the point. Mach exceptions are *also* just messages sent between tasks. Igor seems to think that there is some "duplication" going on, when in fact, we have a Mach thing (an exception) which we need to reflect as a Posix signal for programs that only know about signals. It is obligatory to map Mach exceptions to signals, because Posix-aware and Mach-ignorant programs should get the expected signals for machine faults and the like. However, a program that understands Mach exceptions is certainly able to handle the exceptions itself, directly, by putting its own exception handler in place and then libc's (which does the mapping) will not be used. One can even arrange to handle some exceptions yourself, and forward the others on to the default handler in libc. Leonardo is missing the point, in thinking that exceptions are another approach to signals; they are in fact fundamentally different. When a Mach thread encounters an exceptional condition, the thread is suspended, and a message is sent. The message can be handled by anything else in the system, with one exception: it cannot be handled by the faulting thread, because that thread is suspended. Posix signals are not like this at all; a Posix signal does not suspend anything; instead, the exceptional condition is handled on the stack of the faulting process by directly munging its instruction pointer and such. This has all kinds of problems, and the cleanliness and sanity of the Mach approach is clearly the right way to go in a multi-threaded system with message passing. However, that doesn't mean we can ignore Posix. Igor sees duplication, but I wonder what he thinks should happen when a process gets a Mach exception, for ordinary programs which do nothing special. Thomas
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Bug-hurd mailing list Bug-hurd@gnu.org http://lists.gnu.org/mailman/listinfo/bug-hurd