[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2] lib: extend ASSERT()
On 16.02.2022 10:25, Bertrand Marquis wrote: > Hi Jan, Julien, > >> On 15 Feb 2022, at 21:00, Julien Grall <julien@xxxxxxx> wrote: >> >> (+ Bertrand) >> >> Hi Jan, >> >> On 27/01/2022 14:34, Jan Beulich wrote: >>> The increasing amount of constructs along the lines of >>> if ( !condition ) >>> { >>> ASSERT_UNREACHABLE(); >>> return; >>> } >>> is not only longer than necessary, but also doesn't produce incident >>> specific console output (except for file name and line number). >> >> So I agree that this construct will always result to a minimum 5 lines. >> Which is not nice. But the proposed change is... >> >>> Allow >>> the intended effect to be achieved with ASSERT(), by giving it a second >>> parameter allowing specification of the action to take in release builds >>> in case an assertion would have triggered in a debug one. The example >>> above then becomes >>> ASSERT(condition, return); >>> Make sure the condition will continue to not get evaluated when just a >>> single argument gets passed to ASSERT(). >>> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> >>> --- >>> v2: Rename new macro parameter. >>> --- >>> RFC: The use of a control flow construct as a macro argument may be >>> controversial. >> >> indeed controversial. I find this quite confusing and not something I would >> request a user to switch to if they use the longer version. >> >> That said, this is mainly a matter of taste. So I am interested to hear >> others view. >> >> I have also CCed Bertrand to have an opinions from the Fusa Group (I suspect >> this will go backward for them). > > Thanks and here is my feedback in regards to Fusa here. > > Most certification standards are forbidding completely macros including > conditions (and quite a number are forbidding static inline with conditions). > The main reason for that is MCDC coverage (condition/decisions and not only > code line) is not possible to do anymore down to the source code and has to be > done down to the pre-processed code. > > Out of Fusa considerations, one thing I do not like in this solution is the > fact that > you put some code as parameter of the macro (the return). > > To make this a bit better you could put the return code as parameter > instead of having “return CODE” as parameter. Except that it's not always "return" what you want, and hence it can't be made implicit. > An other thing is that Xen ASSERT after this change will be quite different > from > any ASSERT found in other projects which could make it misleading for > developers. > Maybe we could introduce an ASSERT_RETURN macros instead of modifying the > behaviour of the standard ASSERT ? Along the lines of the above, this would then mean a multitude of new macros. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |