[PATCH] score: Simplify _Objects_Is_api_valid()

Joel Sherrill joel at rtems.org
Tue Apr 25 18:02:17 UTC 2023


Commit it.

If mcdc-checker is happy with it, then I'm ok.

https://gtd-gmbh.gitlab.io/mcdc-checker/mcdc-checker/index.html is

On Tue, Apr 25, 2023 at 1:34 AM Sebastian Huber <
sebastian.huber at embedded-brains.de> wrote:

>
>
> On 23.03.23 17:46, Joel Sherrill wrote:
> >
> >
> > On Thu, Mar 23, 2023 at 11:09 AM Sebastian Huber
> > <sebastian.huber at embedded-brains.de
> > <mailto:sebastian.huber at embedded-brains.de>> wrote:
> >
> >     On 23.03.23 17:03, Joel Sherrill wrote:
> >      >
> >      > On Thu, Mar 23, 2023 at 10:40 AM Sebastian Huber
> >      > <sebastian.huber at embedded-brains.de
> >     <mailto:sebastian.huber at embedded-brains.de>
> >      > <mailto:sebastian.huber at embedded-brains.de
> >     <mailto:sebastian.huber at embedded-brains.de>>> wrote:
> >      >
> >      >     Close #4863.
> >      >     ---
> >      >       cpukit/include/rtems/score/objectimpl.h | 4 +---
> >      >       1 file changed, 1 insertion(+), 3 deletions(-)
> >      >
> >      >     diff --git a/cpukit/include/rtems/score/objectimpl.h
> >      >     b/cpukit/include/rtems/score/objectimpl.h
> >      >     index c58957ccb5..a1a87b5ccb 100644
> >      >     --- a/cpukit/include/rtems/score/objectimpl.h
> >      >     +++ b/cpukit/include/rtems/score/objectimpl.h
> >      >     @@ -542,9 +542,7 @@ static inline bool _Objects_Is_api_valid(
> >      >         uint32_t   the_api
> >      >       )
> >      >       {
> >      >     -  if ( !the_api || the_api > OBJECTS_APIS_LAST )
> >      >     -   return false;
> >      >     -  return true;
> >      >     +  return ( 1 <= the_api && the_api <= OBJECTS_APIS_LAST );
> >      >       }
> >      >
> >      >
> >      > I'd really prefer we avoid compound logical expressions since it
> >      > becomes something that needs MCDC analysis at higher levels
> >      > of verification/qualification.
> >
> >     How does this simplify MC/DC analysis? The truth table doesn't
> >     change if
> >     I replace a short-circuit boolean expression with if + return.
> >
> >
> > gcov cannot directly do mcdc analysis but using simple expressions
> > avoids the introduction of those cases. So gcov reports can be equivalent
> > of an expensive MCDC analysis tool.
> >
> > I'm at the FSW this week and one of the NASA Johnson people shared
> > information on an open source tool and way to use gcov where you
> > are guaranteed to have gcov reports cover this. I'm going to experiment
> > with this when I get home. If it is as easy as it sounds, I'll write up
> > something
> > on the technique and we can discuss if we want to apply this to RTEMS.
> > I think we do since it would allow us to use gcov to ensure we do
> > MCDC level analysis as required by the highest level of all the safety
> > standards I know.
>
> Any news with respect to this topic?
>
> >
> >
> >      >
> >      > Please rewrite using simple logical expressions even if it means
> >      > two exit paths at the source leve. It's the same machine code.
> >
> >     Yes.
>
> Do you really want to change
>
> static inline bool _Objects_Is_api_valid(
>    uint32_t   the_api
> )
> {
>    return ( 1 <= the_api && the_api <= OBJECTS_APIS_LAST );
> }
>
> in
>
> static inline bool _Objects_Is_api_valid(
>    uint32_t   the_api
> )
> {
>    if ( the_api < 1 ) {
>      return false;
>    }
>
>    if ( the_api > OBJECTS_APIS_LAST ) {
>      return false;
>    }
>
>    return true;
> }
>
> ?
>
> I am not really sure why we should do this.
>
> --
> embedded brains GmbH
> Herr Sebastian HUBER
> Dornierstr. 4
> 82178 Puchheim
> Germany
> email: sebastian.huber at embedded-brains.de
> phone: +49-89-18 94 741 - 16
> fax:   +49-89-18 94 741 - 08
>
> Registergericht: Amtsgericht München
> Registernummer: HRB 157899
> Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
> Unsere Datenschutzerklärung finden Sie hier:
> https://embedded-brains.de/datenschutzerklaerung/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20230425/8140469a/attachment.htm>


More information about the devel mailing list