[PATCH v1 2/3] aarch64: Add support for mapping exceptions

Chris Johns chrisj at rtems.org
Sun Apr 18 21:51:07 UTC 2021



On 18/4/21 8:40 am, Joel Sherrill wrote:
> 
> 
> On Sat, Apr 17, 2021, 4:27 PM Gedare Bloom <gedare at rtems.org
> <mailto:gedare at rtems.org>> wrote:
> 
>     On Sat, Apr 17, 2021 at 8:10 AM Joel Sherrill <joel at rtems.org
>     <mailto:joel at rtems.org>> wrote:
>     >
>     >
>     >
>     > On Sat, Apr 17, 2021, 8:25 AM Gedare Bloom <gedare at rtems.org
>     <mailto:gedare at rtems.org>> wrote:
>     >>
>     >> On Fri, Apr 16, 2021 at 6:59 PM Joel Sherrill <joel at rtems.org
>     <mailto:joel at rtems.org>> wrote:
>     >> >
>     >> >
>     >> >
>     >> > On Fri, Apr 16, 2021, 6:57 PM Kinsey Moore <kinsey.moore at oarcorp.com
>     <mailto:kinsey.moore at oarcorp.com>> wrote:
>     >> >>
>     >> >> On 4/16/2021 09:00, Gedare Bloom wrote:
>     >> >> > On Wed, Apr 14, 2021 at 9:47 AM Kinsey Moore
>     <kinsey.moore at oarcorp.com <mailto:kinsey.moore at oarcorp.com>> wrote:
>     >> >> >> This adds support for mapping AArch64 machine exceptions to POSIX
>     >> >> >> signals as necessary for running Ada applications.
>     >> >> >> ---
>     >> >> >> <snip>
>     >> >> >> +  kill(getpid(), signal);
>     >> >> > Not just map it, but actually send it. I'm not convinced this design
>     >> >> > is the right way to deal with this problem. In addition to Sebastian's
>     >> >> > suggestion on using a fatal error handler, you may consider a user
>     >> >> > task to handle this. I think that kill() can have quite a large stack
>     >> >> > consumption? It is a very complex call to include in the 'normal'
>     >> >> > exception handling path with a giant switch to turn it on/off.
>     >> >> >
>     >> >> > If you have some analysis or justification for this design, I'd be
>     >> >> > glad to consider it. However, at a glance, it adds kill() to the
>     >> >> > WCET/latency of all synchronous exception handling when this option is
>     >> >> > enabled. Something about this feels off.
>     >> >>
>     >> >> My only justification is that it is modeled on similar code in the SPARC
>     >> >> BSPs (bsps/sparc/shared/gnatcommon.c) to handle these kinds of mappings
>     >> >> for Ada. I assumed since it was already in place that it was the
>     >> >> preferred method to accomplish this goal.
>     >> >
>     >> Shimming this stuff into the score CPU port with the configuration
>     >> option is suddenly imposing a huge burden across the rest of the
>     >> ports.
>     >
>     >
>     > Originally on the SPARC, this was an optional registration.
>     >>
>     >>
>     >> >
>     >> > The Ada runtime maps certain CPU exceptions to Ada exceptions via
>     signals. We haven't checked C++ yet but it may be similar for at least SIGFPE.
>     >> >
>     >> > We want to standardise this  across the few BSPs that have it and add a
>     configuration option if the user wants this signal mapping expected by at
>     least Ada.
>     >> >
>     >> I need more convincing. I'm not saying this is necessarily wrong, but
>     >> I think it is breaking multiple kind of design rules inside of the
>     >> score. I encourage you to explain and justify this design against
>     >> alternatives, such as using the fatal extension handlers, implementing
>     >> it in the BSP layer, or registering new exception handlers at the
>     >> application layer.
>     >>
>     >> What happens in a classic task when an exception raises and there's no
>     >> signal handler?
>     >
>     >
>     > Classic API tasks have all signals masked. I think that includes all ones
>     which are normally not maskable. So it should be we be delivered.
>     >
>     >>
>     >> What will happen if someone wants to mix multiple language runtimes in
>     >> their application?
>     >
>     >
>     > Whichever runtime registers last wins. Unfortunately, you only have one
>     thread registered.
>     >
>     > We can ask Adacore these questions. Signals is how their runtime does work
>     on other platforms. And those have the same concerns.
>     >
>     Thanks. What's your plan for the remaining architectures?
> 
> 
> The SPARC is the only other one with any existing support like this. It will be
> updated but the others will just wait for someone to need it to be functional.
> Likely just a stub if that's required to link.

Is networking a requirement now or into the future?

Chris


More information about the devel mailing list