Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5ef03460 authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela
Browse files

ALSA: Introduce snd_BUG_ON() macro



Introduced snd_BUG_ON() macro as a replacement of snd_assert() macro.
snd_assert() is pretty ugly as it has the control flow in its argument.
OTOH, snd_BUG_ON() behaves like a normal conditional, thus it's much
easier to read the flow.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@perex.cz>
parent 3caf8c08
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
@@ -6173,6 +6173,47 @@ struct _snd_pcm_runtime {
	 When no debug flag is set, this macro is ignored. 
      </para>
    </section>

    <section id="useful-functions-snd-bug-on">
      <title><function>snd_BUG_ON()</function></title>
      <para>
        <function>snd_BUG_ON()</function> macro is similar with
	<function>WARN_ON()</function> macro. For example,  

        <informalexample>
          <programlisting>
<![CDATA[
  snd_BUG_ON(!pointer);
]]>
          </programlisting>
        </informalexample>

	or it can be used as the condition,
        <informalexample>
          <programlisting>
<![CDATA[
  if (snd_BUG_ON(non_zero_is_bug))
          return -EINVAL;
]]>
          </programlisting>
        </informalexample>

      </para>

      <para>
        The macro takes an conditional expression to evaluate.
	When <constant>CONFIG_SND_DEBUG</constant>, is set, the
	expression is actually evaluated. If it's non-zero, it shows
	the warning message such as
	<computeroutput>BUG? (xxx)</computeroutput>
	normally followed by stack trace.  It returns the evaluated
	value.
	When no <constant>CONFIG_SND_DEBUG</constant> is set, this
	macro always returns zero.
      </para>

    </section>

  </chapter>


+4 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#include <linux/rwsem.h>		/* struct rw_semaphore */
#include <linux/pm.h>			/* pm_message_t */
#include <linux/device.h>
#include <linux/stringify.h>

/* number of supported soundcards */
#ifdef CONFIG_SND_DYNAMIC_MINORS
@@ -405,11 +406,14 @@ void snd_verbose_printd(const char *file, int line, const char *format, ...)
	dump_stack();				\
} while (0)

#define snd_BUG_ON(cond)	WARN((cond), "BUG? (%s)\n", __stringify(cond))

#else /* !CONFIG_SND_DEBUG */

#define snd_printd(fmt, args...)	/* nothing */
#define snd_assert(expr, args...)	(void)(expr)
#define snd_BUG()			/* nothing */
#define snd_BUG_ON(cond)	({/*(void)(cond);*/ 0;})  /* always false */

#endif /* CONFIG_SND_DEBUG */