On May 15 2017 17:42, Takashi Iwai wrote:
On Sun, 14 May 2017 10:57:35 +0200, Takashi Sakamoto wrote:
Hi,
In the last Audio Mini Conference held with Linux Plumber conference 2016[1], I mentioned about tracepoints for PCM params operation. This patchset is for the idea.
In ALSA PCM interface, applications can get hardware capability by ioctl(2) with SNDRV_PCM_IOCTL_HW_REFINE/SNDRV_PCM_IOCT_HW_PARAMS in a shape of 'struct snd_pcm_hw_params'. In kernel side, relevant processing is somewhat complicated and developers sometimes have hard time to debug drivers for PCM constraints and rules.
This patchset adds tracepoints for hw_params operations. When CONFIG_SND_DEBUG is enabled, you can see 'trace_hw_params_mask/trace_hw_params_interval' events of 'snd_pcm' subsystem. When applications execute ioctl(2) with SNDRV_PCM_IOCTL_HW_REFINE/SNDRV_PCM_IOCTL_HW_PARAMS, these events are probed. Developers can get how many PCM rules are added into runtime of PCM substream and which rule changed which parameters.
This patchset also includes some improvements. The last three commits brings small changes to kernel/userspace interface for error handling.
I'm happy to receive your comment for this patchset. For your information, low level application of SNDRV_PCM_IOCTL_HW_REFINE operation is available in my github repository[2].
The patches look good through a quick glance. The only concern I have is the function regression, since there are lots of code rewrites. How did you test?
Currently, I did four things:
1. understand logic to process parameters, constraints and rules 2. add the tracepoints as early as the patchset 3. confirm that probed events include the same data commit by commit 4. do the above with refine-pcm-params.c and got valid results
For the above, I use ALSA Fireweorks/OXFW driver and supported devices, which I know correct behaviour.
Thanks
Takashi Sakamoto