[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XEN RFC] xen: avoid grep fodder define and undef



On 12/03/24 15:30, Jan Beulich wrote:
On 12.03.2024 12:48, Federico Serafini wrote:
Place an "#if 0" before grep fodder definitions and remove the
"#undef".

This addresses several violations of MISRA C:2012 Rule 5.5
("Identifiers shall be distinct from macro names").

No functional change.

Signed-off-by: Federico Serafini <federico.serafini@xxxxxxxxxxx>
---
Hello, I would like to know what you think about this change.
If you want to keep grep fodders as they are, an alternative could be to
deviate violations of Rule 5.5 involving the TYPE_SAFE macro.

I think the original intention was to allow for some (arch?) override.
But we have lived without for long enough that I think we could do as
you suggest. One question though: Wasn't there also a rule against the
use of #undef, violations of which would then be eliminate here as well? > If 
so, I think that would want mentioning in the description. If not,
I'd like to give it a couple of days before ack-ing, just in case other
opinions would be voiced.

Yes, it is advisory Rule 20.5.


--- a/xen/include/xen/iommu.h
+++ b/xen/include/xen/iommu.h
@@ -33,13 +33,10 @@ TYPE_SAFE(uint64_t, dfn);
  #define PRI_dfn     PRIx64
  #define INVALID_DFN _dfn(~0ULL)
-#ifndef dfn_t
+#if 0
  #define dfn_t /* Grep fodder: dfn_t, _dfn() and dfn_x() are defined above */
  #define _dfn
  #define dfn_x
-#undef dfn_t
-#undef _dfn
-#undef dfn_x
  #endif

I have to admit that I'm a little surprised that Misra (Eclair) is
happy with this: The #define-s are all still there, after all.

The #define-s after the #if 0 are skipped by the preprocessor and this
is something that MISRA takes into account.

As an example, Directive 4.4 states that code should not be commented
out and explicitly cites the use of #if and #ifdef to exclude code from
the compilation.

--
Federico Serafini, M.Sc.

Software Engineer, BUGSENG (http://bugseng.com)



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.