Re: [PATCH 4.19.y-cip 16/57] ASoC: add for_each_dpcm_fe() macro

Pavel Machek

On Wed 2019-10-23 10:28:36, Kuninori Morimoto wrote:


--- a/include/sound/soc-dpcm.h
+++ b/include/sound/soc-dpcm.h
@@ -103,6 +103,9 @@ struct snd_soc_dpcm_runtime {
int trigger_pending; /* trigger cmd + 1 if pending, 0 if not */ };

+#define for_each_dpcm_fe(be, stream, dpcm)
+ list_for_each_entry(dpcm, &(be)->dpcm[stream].fe_clients, list_fe)
This macro is really confusing. dpcm is used as both control variable of the
loop and name of the field in *be.
Ohh, yes, indeed.
Thank you for pointing it. I will post fixup patch

Plus it relies on list_fe variable to be
present in the context including it... that's non-standard.
sorry I couldn't understand about this
Macro is:

+#define for_each_dpcm_fe(be, stream, dpcm) \
+ list_for_each_entry(dpcm, &(be)->dpcm[stream].fe_clients, list_fe)
It should be:

+#define for_each_dpcm_fe(be, stream, dpcm, list_de) \
+ list_for_each_entry(dpcm, &(be)->dpcm[stream].fe_clients, list_fe)
[accessing variables not passed as macro arguments is strange/surprising].

Oh and "&(be)->" can be written as "(be)." AFAICT.
This "&" is for fe_clients
Aha, sorry, I misparsed that one.

DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

Join { to automatically receive all group messages.