On 10/1/2021 08:29, Sebastian Huber wrote:
On 01/10/2021 06:39, Gedare Bloom wrote:
You also might separate the exception manager addition away from the
topic of recoverable exceptions. This introduces/extends the classic
API, so it needs to be vetted carefully. Although the new header
claims to be a classic API, it appears to not follow classic API
conventions. You might need to think about what needs to be exposed to
the application level, and how, versus what should be internal. And
follow the conventions for classic API usage (e.g., opaque types not
pointers).

Yes, the <rtems/*.h> is reserved for API header files. The architecture-independent implementation part (Exception Handler) should go to <rtems/score/*.h>. The architecture-dependent part should go in <rtems/score/cpuimpl.h>.  If something really (!) needs to be visible to the API, then it should go in <rtems/score/cpu.h>. The architecture-dependent parts should be documented in the no_cpu header files.

Please make the architecture-dependent interface more abstract. From my point of view your current approach contains to many details of the aarch64 port.

There should be documentation in the RTEMS CPU Supplement with a status for each architecture (similar to the TLS support).

At the moment I only see one API element and this is the new application configuration option.

If you really need new rtems_* interfaces, then please add a proper documentation for them so that it could be included in the RTEMS Classic API Guide. I would prefer to wait with new API elements until at this is implemented on at least another architecture.

Thanks for the feedback, Gedare and Sebastian. I'll get this refactored as suggested and keep everything but the configuration option out of the API.


Sebastian,

Could you be more specific about which parts of the architecture-dependent interface still seem tied to the AArch64 port? I thought I had made them sufficiently abstract by relying on architecture-specific functions to manipulate and take action on the exception frame. The signal mapping code written on top of this should work for any architecture that implements those functions and contains no reliance on architecture that I can see. The set of exception classes in particular includes exceptions that don't exist on AArch64, but were added because they're known to be present on SPARC and need to be handled. I'm only really familiar with ARM and AArch64, so that could be why I'm missing it.


Kinsey

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to