linux-4.4.1/ion_buffer_sync_for_device()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#gb74720f]
#backlinks
*説明 [#a184dc05]
-パス: [[linux-4.4.1/drivers/staging/android/ion/ion.c]]
-FIXME: これは何?
--説明
**引数 [#d6450449]
-struct ion_buffer *buffer
--
--[[linux-4.4.1/ion_buffer]]
-struct device *dev
--
--[[linux-4.4.1/device]]
-enum dma_data_direction dir
--
--[[linux-4.4.1/dma_data_direction]]
**返り値 [#r3f61b50]
-なし
**参考 [#r58d859d]
*実装 [#r35a223a]
static void ion_buffer_sync_for_device(struct ion_buffer...
struct device *dev,
enum dma_data_dir...
{
struct ion_vma_list *vma_list;
int pages = PAGE_ALIGN(buffer->size) / PAGE_SIZE;
int i;
-
--[[linux-4.4.1/ion_vma_list]]
--[[linux-4.4.1/PAGE_ALIGN()]]
--[[linux-4.4.1/PAGE_SIZE]]
pr_debug("%s: syncing for device %s\n", __func__,
dev ? dev_name(dev) : "null");
-
--[[linux-4.4.1/pr_debug()]]
--[[linux-4.4.1/dev_name()]]
if (!ion_buffer_fault_user_mappings(buffer))
return;
-
--[[linux-4.4.1/ion_buffer_fault_user_mappings()]]
mutex_lock(&buffer->lock);
for (i = 0; i < pages; i++) {
-
--[[linux-4.4.1/mutex_lock()]]
struct page *page = buffer->pages[i];
if (ion_buffer_page_is_dirty(page))
ion_pages_sync_for_device(dev, i...
...
-
--[[linux-4.4.1/page]]
--[[linux-4.4.1/ion_buffer_page_is_dirty()]]
--[[linux-4.4.1/ion_pages_sync_for_device()]]
--[[linux-4.4.1/ion_buffer_page()]]
ion_buffer_page_clean(buffer->pages + i);
}
-
--[[linux-4.4.1/ion_buffer_page_clean()]]
list_for_each_entry(vma_list, &buffer->vmas, lis...
struct vm_area_struct *vma = vma_list->v...
zap_page_range(vma, vma->vm_start, vma->...
NULL);
}
mutex_unlock(&buffer->lock);
-
--[[linux-4.4.1/list_for_each_entry()]]
--[[linux-4.4.1/vm_area_struct]]
--[[linux-4.4.1/zap_page_range()]]
--[[linux-4.4.1/mutex_unlock()]]
}
*コメント [#w2165950]
終了行:
*参照元 [#gb74720f]
#backlinks
*説明 [#a184dc05]
-パス: [[linux-4.4.1/drivers/staging/android/ion/ion.c]]
-FIXME: これは何?
--説明
**引数 [#d6450449]
-struct ion_buffer *buffer
--
--[[linux-4.4.1/ion_buffer]]
-struct device *dev
--
--[[linux-4.4.1/device]]
-enum dma_data_direction dir
--
--[[linux-4.4.1/dma_data_direction]]
**返り値 [#r3f61b50]
-なし
**参考 [#r58d859d]
*実装 [#r35a223a]
static void ion_buffer_sync_for_device(struct ion_buffer...
struct device *dev,
enum dma_data_dir...
{
struct ion_vma_list *vma_list;
int pages = PAGE_ALIGN(buffer->size) / PAGE_SIZE;
int i;
-
--[[linux-4.4.1/ion_vma_list]]
--[[linux-4.4.1/PAGE_ALIGN()]]
--[[linux-4.4.1/PAGE_SIZE]]
pr_debug("%s: syncing for device %s\n", __func__,
dev ? dev_name(dev) : "null");
-
--[[linux-4.4.1/pr_debug()]]
--[[linux-4.4.1/dev_name()]]
if (!ion_buffer_fault_user_mappings(buffer))
return;
-
--[[linux-4.4.1/ion_buffer_fault_user_mappings()]]
mutex_lock(&buffer->lock);
for (i = 0; i < pages; i++) {
-
--[[linux-4.4.1/mutex_lock()]]
struct page *page = buffer->pages[i];
if (ion_buffer_page_is_dirty(page))
ion_pages_sync_for_device(dev, i...
...
-
--[[linux-4.4.1/page]]
--[[linux-4.4.1/ion_buffer_page_is_dirty()]]
--[[linux-4.4.1/ion_pages_sync_for_device()]]
--[[linux-4.4.1/ion_buffer_page()]]
ion_buffer_page_clean(buffer->pages + i);
}
-
--[[linux-4.4.1/ion_buffer_page_clean()]]
list_for_each_entry(vma_list, &buffer->vmas, lis...
struct vm_area_struct *vma = vma_list->v...
zap_page_range(vma, vma->vm_start, vma->...
NULL);
}
mutex_unlock(&buffer->lock);
-
--[[linux-4.4.1/list_for_each_entry()]]
--[[linux-4.4.1/vm_area_struct]]
--[[linux-4.4.1/zap_page_range()]]
--[[linux-4.4.1/mutex_unlock()]]
}
*コメント [#w2165950]
ページ名: