ALSA: pcmtest: minor optimizations
authorIvan Orlov <ivan.orlov0322@gmail.com>
Thu, 13 Jul 2023 07:59:53 +0000 (11:59 +0400)
committerTakashi Iwai <tiwai@suse.de>
Fri, 14 Jul 2023 06:07:45 +0000 (08:07 +0200)
Decrease the buffer filling overhead with conditional remainder
calculation in the 'inc_buf_pos' inline function.

Fix the driver to use already defined variables where it is possible
in 'check_buf_block_ni' and 'fill_block_pattern_n' functions.

Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com>
Link: https://lore.kernel.org/r/20230713075953.13692-2-ivan.orlov0322@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/drivers/pcmtest.c

index e74c523..08e14b5 100644 (file)
@@ -144,7 +144,8 @@ static inline void inc_buf_pos(struct pcmtst_buf_iter *v_iter, size_t by, size_t
 {
        v_iter->total_bytes += by;
        v_iter->buf_pos += by;
-       v_iter->buf_pos %= bytes;
+       if (v_iter->buf_pos >= bytes)
+               v_iter->buf_pos %= bytes;
 }
 
 /*
@@ -200,10 +201,10 @@ static void check_buf_block_ni(struct pcmtst_buf_iter *v_iter, struct snd_pcm_ru
        u8 current_byte;
 
        for (i = 0; i < v_iter->b_rw; i++) {
-               current_byte = runtime->dma_area[buf_pos_n(v_iter, channels, i % channels)];
+               ch_num = i % channels;
+               current_byte = runtime->dma_area[buf_pos_n(v_iter, channels, ch_num)];
                if (!current_byte)
                        break;
-               ch_num = i % channels;
                if (current_byte != patt_bufs[ch_num].buf[(v_iter->total_bytes / channels)
                                                          % patt_bufs[ch_num].len]) {
                        v_iter->is_buf_corrupted = true;
@@ -243,7 +244,7 @@ static void fill_block_pattern_n(struct pcmtst_buf_iter *v_iter, struct snd_pcm_
 
        for (i = 0; i < v_iter->b_rw; i++) {
                ch_num = i % channels;
-               runtime->dma_area[buf_pos_n(v_iter, channels, i % channels)] =
+               runtime->dma_area[buf_pos_n(v_iter, channels, ch_num)] =
                        patt_bufs[ch_num].buf[(v_iter->total_bytes / channels)
                                              % patt_bufs[ch_num].len];
                inc_buf_pos(v_iter, 1, runtime->dma_bytes);