On Wed 2019-10-23 10:28:36, Kuninori Morimoto wrote:
Hi
--- 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
Thanks!
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.
Pavel
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany