*参照元 [#e0c9a76a]
#backlinks

*説明 [#n08af9e9]
-パス: [[linux-4.4.1/arch/arm/mm/dma-mapping.c]]

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


**引数 [#vd860836]
-struct page *page
--
--[[linux-4.4.1/page]]
-size_t size
--


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


**参考 [#xdc33dd8]


*実装 [#ub46ed69]
 static void __dma_clear_buffer(struct page *page, size_t size)
 {
         /*
          * Ensure that the allocated pages are zeroed, and that any data
          * lurking in the kernel direct-mapped region is invalidated.
          */
         if (PageHighMem(page)) {
-
--[[linux-4.4.1/PageHighMem()]]

                 phys_addr_t base = __pfn_to_phys(page_to_pfn(page));
                 phys_addr_t end = base + size;
-
--[[linux-4.4.1/__pfn_to_phys()]]
--[[linux-4.4.1/page_to_pfn()]]

                 while (size > 0) {
                         void *ptr = kmap_atomic(page);
                         memset(ptr, 0, PAGE_SIZE);
                         dmac_flush_range(ptr, ptr + PAGE_SIZE);
                         kunmap_atomic(ptr);
-
--[[linux-4.4.1/kmap_atomic()]]
--[[linux-4.4.1/memset()]]
--[[linux-4.4.1/PAGE_SIZE]]
--[[linux-4.4.1/dmac_flush_range()]]
--[[linux-4.4.1/kunmap_atomic()]]

                         page++;
                         size -= PAGE_SIZE;
                 }
                 outer_flush_range(base, end);
-
--[[linux-4.4.1/outer_flush_range()]]

         } else {
                 void *ptr = page_address(page);
                 memset(ptr, 0, size);
                 dmac_flush_range(ptr, ptr + size);
                 outer_flush_range(__pa(ptr), __pa(ptr) + size);
-
--[[linux-4.4.1/page_address()]]

         }
 }


*コメント [#p7c9dd4b]


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