*参照元 [#r9cf43ae]
#backlinks

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

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


**引数 [#se3fdec5]
-struct device *dev
--
--[[linux-4.4.1/device]]
-size_t size
--
-gfp_t gfp
--
--[[linux-4.4.1/gfp_t]]


**返り値 [#zbb033c7]
-struct page *
--


**参考 [#td267c24]


*実装 [#le769183]
 /*
  * Allocate a DMA buffer for 'dev' of size 'size' using the
  * specified gfp mask.  Note that 'size' must be page aligned.
  */
 static struct page *__dma_alloc_buffer(struct device *dev, size_t size, gfp_t gfp)
 {
         unsigned long order = get_order(size);
         struct page *page, *p, *e;
 
-
--[[linux-4.4.1/get_order()]]

         page = alloc_pages(gfp, order);
         if (!page)
                 return NULL;
 
-
--[[linux-4.4.1/alloc_pages()]]

         /*
          * Now split the huge page and free the excess pages
          */
         split_page(page, order);
-
--[[linux-4.4.1/split_page()]]

         for (p = page + (size >> PAGE_SHIFT), e = page + (1 << order); p < e; p++)
                 __free_page(p);
 
-
--[[linux-4.4.1/__free_page()]]

         __dma_clear_buffer(page, size);
 
-
--[[linux-4.4.1/__dma_clear_buffer()]]

         return page;
 }


*コメント [#be52eb8a]


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