mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
The Advanced Linux Sound Architecture (ALSA) - library
Currently, failures of status/control data mapping are handled dependently. However, it's not sure that one of the operations is failed when another is failed. This commit adds a member into private data structure to maintain fallback mode for control data mapping, independently of status data mapping. As a result, we have four cases to handle status/control data: 1. both of status/control data are mapped. Nothing changed. A structure with alias of 'snd_pcm_hw_t' already has two members to point the mapped area and in application runtime they're used to refer/set status/control data. No need to call ioctl(2) with SNDRV_PCM_IOCTL_SYNC_PTR to issue/query the data. 2. both of status/control data are unmapped. The two members point to allocated memory for fallback buffer. In application runtime, the buffer is given as an argument for ioctl(2) with SNDRV_PCM_IOCTL_SYNC_PTR to issue/query the data. 3. status data is mapped only. One of the two members is used to point the mapped area. Another points to allocated memory for fallback buffer. In application runtime, the buffer is used as an argument to execute ioctl(2) with SNDRV_PCM_IOCTL_SYNC_PTR for the latter data, but the former data is already synchronized. 4. control data is mapped only. The same as the above. In design of ALSA PCM interface, userspace applications are not expected to map the status data as writable. On the other hand, expected to map the control data as writable. In a focus on the differences, we could achieve to reduce calls of the ioctl(2) in a case that one of the status/control data is successfully mapped and another is failed (case 3 and 4). Especially, in current alsa-lib implementation, application runtime queries state of runtime of PCM substream so often. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de> |
||
|---|---|---|
| alsalisp | ||
| aserver | ||
| doc | ||
| include | ||
| m4 | ||
| modules | ||
| src | ||
| test | ||
| utils | ||
| .gitignore | ||
| acinclude.m4 | ||
| ChangeLog | ||
| configure.ac | ||
| COPYING | ||
| gitcompile | ||
| INSTALL | ||
| Makefile.am | ||
| MEMORY-LEAK | ||
| NOTES | ||
| TODO | ||