*参照元 [#hc3dc615]
#backlinks

*説明 [#if9de86c]
-パス: [[linux-4.4.1/sound/core/pcm_native.c]]

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


**引数 [#u4efff76]
-struct snd_pcm_substream *substream
--
--[[linux-4.4.1/snd_pcm_substream]]
-struct vm_area_struct *area
--
--[[linux-4.4.1/vm_area_struct]]


**返り値 [#oa356611]
-int
--


**参考 [#abc16e4b]


*実装 [#s328591a]
 /**
  * snd_pcm_lib_default_mmap - Default PCM data mmap function
  * @substream: PCM substream
  * @area: VMA
  *
  * This is the default mmap handler for PCM data.  When mmap pcm_ops is NULL,
  * this function is invoked implicitly.
  */
 int snd_pcm_lib_default_mmap(struct snd_pcm_substream *substream,
                              struct vm_area_struct *area)
 {
         area->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
 #ifdef CONFIG_GENERIC_ALLOCATOR
-
--[[linux-4.4.1/CONFIG_GENERIC_ALLOCATOR]]

         if (substream->dma_buffer.dev.type == SNDRV_DMA_TYPE_DEV_IRAM) {
                 area->vm_page_prot = pgprot_writecombine(area->vm_page_prot);
                 return remap_pfn_range(area, area->vm_start,
                                 substream->dma_buffer.addr >> PAGE_SHIFT,
                                 area->vm_end - area->vm_start, area->vm_page_prot);
-
--substream->dma_buffer は struct snd_dma_buffer 型
--[[linux-4.4.1/snd_dma_buffer]]
--[[linux-4.4.1/pgprot_writecombine()]]
--[[linux-4.4.1/remap_pfn_range()]]

         }
 #endif /* CONFIG_GENERIC_ALLOCATOR */
 #ifndef CONFIG_X86 /* for avoiding warnings arch/x86/mm/pat.c */
-
--[[linux-4.4.1/CONFIG_X86]]

         if (!substream->ops->page &&
             substream->dma_buffer.dev.type == SNDRV_DMA_TYPE_DEV)
                 return dma_mmap_coherent(substream->dma_buffer.dev.dev,
                                          area,
                                          substream->runtime->dma_area,
                                          substream->runtime->dma_addr,
                                          area->vm_end - area->vm_start);
-
--snd->ops は const struct snd_pcm_ops * 型
--substream->ops は const struct snd_pcm_ops * 型
--[[linux-4.4.1/snd_pcm_ops]]
--snd->runtime は struct snd_pcm_runtime * 型
--substream->runtime は struct snd_pcm_runtime * 型
--[[linux-4.4.1/snd_pcm_runtime]]
--[[linux-4.4.1/dma_mmap_coherent()]]

 #endif /* CONFIG_X86 */
         /* mmap with fault handler */
         area->vm_ops = &snd_pcm_vm_ops_data_fault;
-
--[[linux-4.4.1/snd_pcm_vm_ops_data_fault(global)]]

         return 0;
 }
 EXPORT_SYMBOL_GPL(snd_pcm_lib_default_mmap);
-
--[[linux-4.4.1/EXPORT_SYMBOL_GPL()]]


*コメント [#baa8708a]

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