[PATCH] score: Split _Terminate and call _Terminate_CPU_Fatal_halt.
Sebastian Huber
sebastian.huber at embedded-brains.de
Mon Apr 28 06:18:56 UTC 2014
On 2014-04-28 01:48, Chris Johns wrote:
> On 27/04/2014 10:30 pm, Sebastian Huber wrote:
>> On 04/27/2014 02:13 PM, Chris Johns wrote:
>>> Splitting the call to _CPU_Fatal_halt out into a separate function
>>> allows the rtems-test gdb support the ability to halt once the
>>> _Terminate function has completed it's work.
>>>
>>> This change allows the BeagleBoard xM BSP to pass a number of
>>> important tests.
>>
>> I don't find a BeagleBord BSP in the tree.
>>
>
> Ben has nicely answered this. Thanks Ben.
>
>> In case the BSP has to do fancy things during termination, why don't you
>> do this in bsp_reset() or bsp_fatal_extension()?
>>
>> I guess the bsp.h has no:
>>
>> #include <bsp/default-initial-extension.h>
>>
>
> I do not know and from a testing point of view I do not think it should it matter.
>
> The _Terminate function needs to be split so we can set a break point and have
> it hit in the default case. Setting a break point based on a line number in a
> file is far too fragile. We need the extensions to run so the END marker is
> output in a few tests.
You can set a break point to bsp_fatal_extension() (works with every BSP in the
tree) or you can set a break point to rtems_test_fatal_extension() (works with
every test in the tree, if not, then this test is broken).
>
> I added the weak part because it costs nothing to add. Maybe we should consider
> the patch as 2 parts.
>
>> The way to control the termination sequence is via user extensions and
>> not weak functions.
>
> Pros and cons ... If the point is having only one way, that is a valid comment.
> On the other hand weak functions cost little if anything and it lets the BSP
> designer have control over adding the required BSP specialisation. Weak
> functions can be abused and that should be avoided.
I see no point in adding another can of worms for just one BSP if you can
easily avoid this with the existing solution (see above).
>
> I have now taken a closer look at this default extension approach. The
> <bsp/default-initial-extension.h> fights the cpukit and bsp separation and adds
> new rules to the use of confdefs.h that I do not think are being enforced.
If you don't use confdefs.h, then you should know what you are doing.
> If a
> new user to RTEMS uses a BSP and creates an app using confdefs.h and does not
> first include bsp.h or default-initial-extension.h the resulting BSP code
> linked in is not what the BSP designer intended and as far as I can see there
> is not indication something is wrong.
If you use confdefs.h, then everything is fine:
[...]
#ifdef CONFIGURE_DISABLE_BSP_SETTINGS
#undef BSP_DEFAULT_UNIFIED_WORK_AREAS
#undef BSP_IDLE_TASK_BODY
#undef BSP_IDLE_TASK_STACK_SIZE
#undef BSP_INITIAL_EXTENSION
#undef BSP_INTERRUPT_STACK_SIZE
#undef BSP_MAXIMUM_DEVICES
#undef BSP_ZERO_WORKSPACE_AUTOMATICALLY
#undef CONFIGURE_BSP_PREREQUISITE_DRIVERS
#undef CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK
#else
#include <bsp.h>
#endif
[...]
This missing include of <bsp.h> was indeed a problem in the past and resulted
in quite a lot service requests and confused users (e.g. no power saving idle
thread).
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber at embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the devel
mailing list