参照元†
- FIXME: これは何?
- 指定した PCM デバイスのすべての substream について、バッファを確保する。
- struct snd_pcm *pcm
- int type
- バッファのタイプ
- SNDRV_DMA_TYPE_CONTINUOUS
- SNDRV_DMA_TYPE_DEV
- など
- void *data
- type によって何を渡せば良いか変わる
- SNDRV_DMA_TYPE_CONTINUOUS なら GFP_XXXX
- SNDRV_DMA_TYPE_DEV なら struct device *
- size_t size
- size_t max
- 最大バッファサイズ、何に使われているのか良くわからない…
返り値†
/**
* snd_pcm_lib_preallocate_pages_for_all - pre-allocation for continuous memory type (all substreams)
* @pcm: the pcm instance
* @type: DMA type (SNDRV_DMA_TYPE_*)
* @data: DMA type dependent data
* @size: the requested pre-allocation size in bytes
* @max: the max. allowed pre-allocation size
*
* Do pre-allocation to all substreams of the given pcm for the
* specified DMA type.
*
* Return: Zero if successful, or a negative error code on failure.
*/
int snd_pcm_lib_preallocate_pages_for_all(struct snd_pcm *pcm,
int type, void *data,
size_t size, size_t max)
{
struct snd_pcm_substream *substream;
int stream, err;
for (stream = 0; stream < 2; stream++)
for (substream = pcm->streams[stream].substream; substream; substream = substream->next)
- substream は playback と capture の 2つ
- pcm->streams は struct snd_pcm_str 型
if ((err = snd_pcm_lib_preallocate_pages(substream, type, data, size, max)) < 0)
return err;
return 0;
}
EXPORT_SYMBOL(snd_pcm_lib_preallocate_pages_for_all);
コメント†