linux-4.4.1/ion_heap_map_user()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#w44ab9ea]
#backlinks
*説明 [#rd397b74]
-パス: [[linux-4.4.1/drivers/staging/android/ion/ion_heap...
-FIXME: これは何?
--説明
**引数 [#y2540aac]
-struct ion_heap *heap
--
--[[linux-4.4.1/ion_heap]]
-struct ion_buffer *buffer
--
--[[linux-4.4.1/ion_buffer]]
-struct vm_area_struct *vma
--
--[[linux-4.4.1/vm_area_struct]]
**返り値 [#sadd0e28]
-int
--
**参考 [#f3e2ad5b]
*実装 [#o9c9da8f]
int ion_heap_map_user(struct ion_heap *heap, struct ion_...
struct vm_area_struct *vma)
{
struct sg_table *table = buffer->sg_table;
unsigned long addr = vma->vm_start;
unsigned long offset = vma->vm_pgoff * PAGE_SIZE;
struct scatterlist *sg;
int i;
int ret;
-
--[[linux-4.4.1/sg_table]]
--[[linux-4.4.1/PAGE_SIZE]]
--[[linux-4.4.1/scatterlist]]
for_each_sg(table->sgl, sg, table->nents, i) {
-
--[[linux-4.4.1/for_each_sg()]]
struct page *page = sg_page(sg);
unsigned long remainder = vma->vm_end - ...
unsigned long len = sg->length;
-
--[[linux-4.4.1/page]]
--[[linux-4.4.1/sg_page()]]
if (offset >= sg->length) {
offset -= sg->length;
continue;
} else if (offset) {
page += offset / PAGE_SIZE;
len = sg->length - offset;
offset = 0;
}
len = min(len, remainder);
ret = remap_pfn_range(vma, addr, page_to...
vma->vm_page_prot);
if (ret)
return ret;
-
--[[linux-4.4.1/min()]]
--[[linux-4.4.1/remap_pfn_range()]]
--[[linux-4.4.1/page_to_pfn()]]
addr += len;
if (addr >= vma->vm_end)
return 0;
}
return 0;
}
*コメント [#wee315d6]
終了行:
*参照元 [#w44ab9ea]
#backlinks
*説明 [#rd397b74]
-パス: [[linux-4.4.1/drivers/staging/android/ion/ion_heap...
-FIXME: これは何?
--説明
**引数 [#y2540aac]
-struct ion_heap *heap
--
--[[linux-4.4.1/ion_heap]]
-struct ion_buffer *buffer
--
--[[linux-4.4.1/ion_buffer]]
-struct vm_area_struct *vma
--
--[[linux-4.4.1/vm_area_struct]]
**返り値 [#sadd0e28]
-int
--
**参考 [#f3e2ad5b]
*実装 [#o9c9da8f]
int ion_heap_map_user(struct ion_heap *heap, struct ion_...
struct vm_area_struct *vma)
{
struct sg_table *table = buffer->sg_table;
unsigned long addr = vma->vm_start;
unsigned long offset = vma->vm_pgoff * PAGE_SIZE;
struct scatterlist *sg;
int i;
int ret;
-
--[[linux-4.4.1/sg_table]]
--[[linux-4.4.1/PAGE_SIZE]]
--[[linux-4.4.1/scatterlist]]
for_each_sg(table->sgl, sg, table->nents, i) {
-
--[[linux-4.4.1/for_each_sg()]]
struct page *page = sg_page(sg);
unsigned long remainder = vma->vm_end - ...
unsigned long len = sg->length;
-
--[[linux-4.4.1/page]]
--[[linux-4.4.1/sg_page()]]
if (offset >= sg->length) {
offset -= sg->length;
continue;
} else if (offset) {
page += offset / PAGE_SIZE;
len = sg->length - offset;
offset = 0;
}
len = min(len, remainder);
ret = remap_pfn_range(vma, addr, page_to...
vma->vm_page_prot);
if (ret)
return ret;
-
--[[linux-4.4.1/min()]]
--[[linux-4.4.1/remap_pfn_range()]]
--[[linux-4.4.1/page_to_pfn()]]
addr += len;
if (addr >= vma->vm_end)
return 0;
}
return 0;
}
*コメント [#wee315d6]
ページ名: