[PATCH] ALSA: seq: virmidi: Add a drain operation
Geraldo Nascimento
geraldogabriel at gmail.com
Fri Jan 7 21:37:06 CET 2022
On Wed, Jan 05, 2022 at 09:47:17PM +0100, Stefan Sauer wrote:
> If a driver does not supply a drain operation for outputs, a default code
> path will execute msleep(50). Especially for a virtual midi device
> this severely limmits the throughput.
>
> This implementation for the virtual midi driver simply flushes the output
> workqueue.
>
> Signed-off-by: Stefan Sauer <st.kost at gmail.com>
Hi, Stefan,
Thanks for the patch!
However it seems you forgot to Cc: Takashi Iwai.
Cc:ing him now so he takes notice.
Thank you,
Geraldo Nascimento
> ---
> sound/core/seq/seq_virmidi.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/sound/core/seq/seq_virmidi.c b/sound/core/seq/seq_virmidi.c
> index 4abc38c70cae..f5cae49500c8 100644
> --- a/sound/core/seq/seq_virmidi.c
> +++ b/sound/core/seq/seq_virmidi.c
> @@ -262,6 +262,16 @@ static int snd_virmidi_output_close(struct snd_rawmidi_substream *substream)
> return 0;
> }
>
> +/*
> + * drain output work queue
> + */
> +static void snd_virmidi_output_drain(struct snd_rawmidi_substream *substream)
> +{
> + struct snd_virmidi *vmidi = substream->runtime->private_data;
> +
> + flush_work(&vmidi->output_work);
> +}
> +
> /*
> * subscribe callback - allow output to rawmidi device
> */
> @@ -336,6 +346,7 @@ static const struct snd_rawmidi_ops snd_virmidi_output_ops = {
> .open = snd_virmidi_output_open,
> .close = snd_virmidi_output_close,
> .trigger = snd_virmidi_output_trigger,
> + .drain = snd_virmidi_output_drain,
> };
>
> /*
> --
> 2.34.1
>
More information about the Alsa-devel
mailing list