*参照元 [#la39e38d]
#backlinks

*説明 [#g7c63d2a]
-パス: [[linux-2.6.33/sound/core/pcm_lib.c]]

-FIXME: これは何?
--説明


**引数 [#sfafa272]
-struct snd_pcm_substream *substream
--
--[[linux-2.6.33/snd_pcm_substream]]


**返り値 [#k1e539b4]
-なし


**参考 [#g380701c]


*実装 [#gb4e68db]
 /**
  * snd_pcm_period_elapsed - update the pcm status for the next period
  * @substream: the pcm substream instance
  *
  * This function is called from the interrupt handler when the
  * PCM has processed the period size.  It will update the current
  * pointer, wake up sleepers, etc.
  *
  * Even if more than one periods have elapsed since the last call, you
  * have to call this only once.
  */
 void snd_pcm_period_elapsed(struct snd_pcm_substream *substream)
 {
 	struct snd_pcm_runtime *runtime;
 	unsigned long flags;
 
-
--[[linux-2.6.33/snd_pcm_runtime]]

 	if (PCM_RUNTIME_CHECK(substream))
 		return;
 	runtime = substream->runtime;
 
-
--[[linux-2.6.33/PCM_RUNTIME_CHECK()]]

 	if (runtime->transfer_ack_begin)
 		runtime->transfer_ack_begin(substream);
 
 	snd_pcm_stream_lock_irqsave(substream, flags);
 	if (!snd_pcm_running(substream) ||
 	    snd_pcm_update_hw_ptr_interrupt(substream) < 0)
 		goto _end;
 
-
--[[linux-2.6.33/snd_pcm_stream_lock_irqsave()]]
-
--[[linux-2.6.33/snd_pcm_running()]]
-
--[[linux-2.6.33/snd_pcm_update_hw_ptr_interrupt()]]

 	if (substream->timer_running)
 		snd_timer_interrupt(substream->timer, 1);
-
--[[linux-2.6.33/snd_timer_interrupt()]]

  _end:
 	snd_pcm_stream_unlock_irqrestore(substream, flags);
 	if (runtime->transfer_ack_end)
 		runtime->transfer_ack_end(substream);
-
--[[linux-2.6.33/snd_pcm_stream_unlock_irqrestore()]]

 	kill_fasync(&runtime->fasync, SIGIO, POLL_IN);
-
--[[linux-2.6.33/kill_fasync()]]

 }
 
 EXPORT_SYMBOL(snd_pcm_period_elapsed);
-ライセンスに関係なくシンボルを公開する。
--[[linux-2.6.33/EXPORT_SYMBOL()]]


*コメント [#aec298f0]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS