*参照元 [#b2bd0c8d] #backlinks *説明 [#hd84564d] -パス: [[linux-2.6.33/sound/core/pcm_lib.c]] -FIXME: これは何? --説明 **引数 [#u7ae7246] -struct snd_pcm_substream *substream -- --[[linux-2.6.33/snd_pcm_substream]] -struct snd_pcm_runtime *runtime -- --[[linux-2.6.33/snd_pcm_runtime]] **返り値 [#r0becd3c] -snd_pcm_uframes_t -- **参考 [#l59fed48] *実装 [#td469302] static snd_pcm_uframes_t snd_pcm_update_hw_ptr_pos(struct snd_pcm_substream *substream, struct snd_pcm_runtime *runtime) { snd_pcm_uframes_t pos; - --[[linux-2.6.33/snd_pcm_uframes_t]] pos = substream->ops->pointer(substream); -substream->ops は snd_pcm_ops 型 --[[linux-2.6.33/snd_pcm_ops]] if (pos == SNDRV_PCM_POS_XRUN) return pos; /* XRUN */ - --[[linux-2.6.33/SNDRV_PCM_POS_XRUN]] if (pos >= runtime->buffer_size) { if (printk_ratelimit()) { - --[[linux-2.6.33/printk_ratelimit()]] char name[16]; pcm_debug_name(substream, name, sizeof(name)); snd_printd(KERN_ERR "BUG: %s, pos = 0x%lx, " "buffer size = 0x%lx, period size = 0x%lx\n", name, pos, runtime->buffer_size, runtime->period_size); - --[[linux-2.6.33/pcm_debug_name()]] - --[[linux-2.6.33/snd_printd()]] } pos = 0; } pos -= pos % runtime->min_align; return pos; } *コメント [#yfdd9dbe]