*参照元 [#zb7d666b]
#backlinks

*説明 [#udb98bb4]
-パス: [[linux-4.4.1/include/linux/dma-mapping.h]]

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


**参考 [#z67612a7]


*実装 [#z39a6233]
 /*
  * A dma_addr_t can hold any valid DMA or bus address for the platform.
  * It can be given to a device to use as a DMA source or target.  A CPU cannot
  * reference a dma_addr_t directly because there may be translation between
  * its physical address space and the bus address space.
  */
 struct dma_map_ops {
         void* (*alloc)(struct device *dev, size_t size,
                                 dma_addr_t *dma_handle, gfp_t gfp,
                                 struct dma_attrs *attrs);
-
--[[linux-4.4.1/device]]
--[[linux-4.4.1/dma_addr_t]]
--[[linux-4.4.1/gfp_t]]
--[[linux-4.4.1/dma_attrs]]

         void (*free)(struct device *dev, size_t size,
                               void *vaddr, dma_addr_t dma_handle,
                               struct dma_attrs *attrs);
         int (*mmap)(struct device *, struct vm_area_struct *,
                           void *, dma_addr_t, size_t, struct dma_attrs *attrs);
 
-
--[[linux-4.4.1/vm_area_struct]]

         int (*get_sgtable)(struct device *dev, struct sg_table *sgt, void *,
                            dma_addr_t, size_t, struct dma_attrs *attrs);
 
-
--[[linux-4.4.1/sg_table]]

         dma_addr_t (*map_page)(struct device *dev, struct page *page,
                                unsigned long offset, size_t size,
                                enum dma_data_direction dir,
                                struct dma_attrs *attrs);
-
--[[linux-4.4.1/page]]
--[[linux-4.4.1/dma_data_direction]]

         void (*unmap_page)(struct device *dev, dma_addr_t dma_handle,
                            size_t size, enum dma_data_direction dir,
                            struct dma_attrs *attrs);
         /*
          * map_sg returns 0 on error and a value > 0 on success.
          * It should never return a value < 0.
          */
         int (*map_sg)(struct device *dev, struct scatterlist *sg,
                       int nents, enum dma_data_direction dir,
                       struct dma_attrs *attrs);
-
--[[linux-4.4.1/scatterlist]]

         void (*unmap_sg)(struct device *dev,
                          struct scatterlist *sg, int nents,
                          enum dma_data_direction dir,
                          struct dma_attrs *attrs);
         void (*sync_single_for_cpu)(struct device *dev,
                                     dma_addr_t dma_handle, size_t size,
                                     enum dma_data_direction dir);
         void (*sync_single_for_device)(struct device *dev,
                                        dma_addr_t dma_handle, size_t size,
                                        enum dma_data_direction dir);
         void (*sync_sg_for_cpu)(struct device *dev,
                                 struct scatterlist *sg, int nents,
                                 enum dma_data_direction dir);
         void (*sync_sg_for_device)(struct device *dev,
                                    struct scatterlist *sg, int nents,
                                    enum dma_data_direction dir);
         int (*mapping_error)(struct device *dev, dma_addr_t dma_addr);
         int (*dma_supported)(struct device *dev, u64 mask);
         int (*set_dma_mask)(struct device *dev, u64 mask);
 #ifdef ARCH_HAS_DMA_GET_REQUIRED_MASK
-
--[[linux-4.4.1/ARCH_HAS_DMA_GET_REQUIRED_MASK]]

         u64 (*get_required_mask)(struct device *dev);
 #endif
         int is_phys;
 };


*コメント [#r12500ed]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS