All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: "Wischer, Timo (ADITG/ESB)" <twischer@de.adit-jv.com>
Cc: "alsa-devel@alsa-project.org" <alsa-devel@alsa-project.org>
Subject: Re: [PATCH - JACK 1/1] jack: Use internal snd_pcm_state to reduce amount of additional variables
Date: Thu, 15 Mar 2018 16:49:54 +0100	[thread overview]
Message-ID: <s5h605x72zh.wl-tiwai@suse.de> (raw)
In-Reply-To: <B0FB33DC1499054591F62C0EF1E013D7684FDCEB@HI2EXCH01.adit-jv.com>

On Thu, 15 Mar 2018 16:07:31 +0100,
Wischer, Timo (ADITG/ESB) wrote:
> 
> > We need to check it, of course.  But the behavior of the prepare
> > function is certainly different from others, so it's more likely a
> > bug.
> 
> I could provide a fix for the IO plug API for prepare and draining.

Yes, these are very trivial changes.


> > This should be notified to ioplug via snd_pcm_ioplug_set_state().
> 
> Without an additional variable snd_pcm_ioplug_set_state() has to be called from the JACK thread.
> But snd_pcm_ioplug_set_state() is not thread safe.

Well, but your internal state copy is also not thread safe as of this
patch, after all.


> > That'd be great if everything is ready, but this can't be a reason to
> > add a shadow state and modify the code as in the patch for now.
> 
> At the end I would like to use functions similar to READ_ONCE() and WRITE_ONCE() to access the state (known from the Linux kernel [1]).
> But I think this should not be part of the ALSA library because it is for most IO plugins not required.
> Therefore I need to have an internal copy of the state which will only be accessed with READ_ONCE() and WRITE_ONCE().
> 
> You are right, it is not yet required but at the end I have to implement it.
> 
> Do you think we should implement such a synchronization into the ALSA lib?
> 
> [1] https://www.kernel.org/doc/Documentation/memory-barriers.txt

I really would like to avoid that, at least, not introducing any
dependency into alsa-lib.

The usage inside a plugin is another question, and it would depend on
the implementation details.  A dependency in plugin may cause a messy
conflict when different versions are used in a same application.  So,
in general, it'd be best for a plugin to be self-contained.


Takashi

  reply	other threads:[~2018-03-15 15:49 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-24 11:53 [PATCH - JACK PCM plugin] jack: Do not Xrun the ALSA buffer twischer
2018-02-26  8:14 ` Wischer, Timo (ADITG/ESB)
2018-02-27  8:48   ` Takashi Iwai
2018-03-01 13:14     ` [PATCH - JACK PCM plugin] Xrun handling twischer
2018-03-01 13:14       ` [PATCH - JACK plugin 1/4] jack: Do not Xrun the ALSA buffer twischer
2018-03-01 15:24         ` Takashi Iwai
2018-03-02 16:21           ` twischer
2018-03-02 16:21             ` [PATCH - PCM 2/3] pcm: ioplug: Provide hw_avail helper function for plugins twischer
2018-03-02 16:21             ` [PATCH - PCM 3/3] pcm: Provide areas_copy function which handles buffer wrap around twischer
2018-03-02 16:21             ` [PATCH - JACK 1/1] jack: Do not Xrun the ALSA buffer twischer
2018-03-13  8:34               ` [PATCH - JACK plugin] " twischer
2018-03-13  8:34                 ` [PATCH - PCM 1/2] pcm: ioplug: Provide hw_avail helper function for plugins twischer
2018-03-13  8:34                 ` [PATCH - PCM 2/2] pcm: Provide areas_copy function which handles buffer wrap around twischer
2018-03-13  8:34                 ` [PATCH - JACK 1/1] jack: Do not Xrun the ALSA buffer twischer
2018-03-13 21:20                 ` [PATCH - JACK plugin] " Takashi Iwai
2018-03-15 15:09                   ` Wischer, Timo (ADITG/ESB)
2018-03-15 15:13                     ` Takashi Iwai
2018-03-01 13:14       ` [PATCH - JACK plugin 2/4] jack: Use internal snd_pcm_state to reduce amount of additional variables twischer
2018-03-01 15:26         ` Takashi Iwai
2018-03-15 12:56           ` [PATCH - JACK plugin] " twischer
2018-03-15 12:56             ` [PATCH - JACK 1/1] " twischer
2018-03-15 13:14               ` Takashi Iwai
2018-03-15 14:05                 ` Wischer, Timo (ADITG/ESB)
2018-03-15 14:20                   ` Takashi Iwai
2018-03-15 15:07                     ` Wischer, Timo (ADITG/ESB)
2018-03-15 15:49                       ` Takashi Iwai [this message]
2018-03-16 10:02                         ` [PATCH - IOPLUG] Update prepare and draining state correctly twischer
2018-03-16 10:02                           ` [PATCH - IOPLUG 1/1] pcm: ioplug: update Prepare " twischer
2018-03-16 10:08                             ` Takashi Iwai
2018-03-16 10:20                               ` [PATCH - IOPLUG 1/1] pcm: ioplug: update prepare " twischer
2018-03-16 10:30                                 ` Takashi Iwai
2018-03-01 13:14       ` [PATCH - JACK plugin 3/4] jack: Report Xruns to user application twischer
2018-03-16 14:23         ` twischer
2018-03-16 14:23           ` [PATCH - JACK 1/1] " twischer
2018-03-16 14:41             ` Takashi Iwai
2018-03-16 14:47               ` Wischer, Timo (ADITG/ESB)
2018-03-16 14:57                 ` Takashi Iwai
2018-03-01 13:14       ` [PATCH - JACK plugin 4/4] jack: Support snd_pcm_drain() twischer
2018-03-01 13:41         ` Jaroslav Kysela
2018-03-16 14:44           ` Wischer, Timo (ADITG/ESB)
2018-03-16 15:11             ` Jaroslav Kysela
2018-03-16 15:52               ` Wischer, Timo (ADITG/ESB)
2018-03-21 16:22                 ` Wischer, Timo (ADITG/ESB)
2018-03-21 16:34                   ` Takashi Iwai
2018-03-21 16:47                     ` Wischer, Timo (ADITG/ESB)
2018-03-21 16:52                       ` Takashi Iwai
2018-03-21 17:02                         ` Wischer, Timo (ADITG/ESB)
2018-03-21 17:07                           ` Takashi Iwai
2018-03-01 15:19       ` [PATCH - JACK PCM plugin] Xrun handling Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=s5h605x72zh.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=twischer@de.adit-jv.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.