RE: [PATCH v3 1/6] scsi: ufs: Remove stringize operator '#' restriction

From: David Laight
Date: Mon Dec 14 2020 - 18:13:43 EST


From: Bean Huo <huobean@xxxxxxxxx>
> Sent: 14 December 2020 20:20
>
> From: Bean Huo <beanhuo@xxxxxxxxxx>
>
> Current EM macro definition, we use stringize operator '#', which turns
> the argument it precedes into a quoted string. Thus requires the symbol
> of __print_symbolic() should be the string corresponding to the name of
> the enum.
>
> However, we have other cases, the symbol and enum name are not the same,
> we can redefine EM/EMe, but there will introduce some redundant codes.
> This patch is to remove this restriction, let others reuse the current
> EM/EMe definition.
>
> Acked-by: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx>
> Signed-off-by: Bean Huo <beanhuo@xxxxxxxxxx>
> ---
> include/trace/events/ufs.h | 40 +++++++++++++++++++-------------------
> 1 file changed, 20 insertions(+), 20 deletions(-)
>
> diff --git a/include/trace/events/ufs.h b/include/trace/events/ufs.h
> index 0bd54a184391..fa755394bc0f 100644
> --- a/include/trace/events/ufs.h
> +++ b/include/trace/events/ufs.h
> @@ -20,28 +20,28 @@
..
> +#define UFS_LINK_STATES \
> + EM(UIC_LINK_OFF_STATE, "UIC_LINK_OFF_STATE") \
> + EM(UIC_LINK_ACTIVE_STATE, "UIC_LINK_ACTIVE_STATE") \
> + EMe(UIC_LINK_HIBERN8_STATE, "UIC_LINK_HIBERN8_STATE")

If you make EM a parameter to UFS_LINK_STATES then the caller
can pass in the name of a #define that does the required expansion.
The caller can also add in any required terminator after the last entry.
For an enum (which doesn't want a , at the end) just add a dummy entry.
You often want a constant for the number of items anyway.

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)