linux-4.4.1/ion_carveout_heap_allocate()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#m81896d3]
#backlinks
*説明 [#v6a0a75b]
-パス: [[linux-4.4.1/drivers/staging/android/ion/ion_carv...
-FIXME: これは何?
--説明
**引数 [#y317538a]
-struct ion_heap *heap
--
--[[linux-4.4.1/ion_heap]]
-struct ion_buffer *buffer
--
--[[linux-4.4.1/ion_buffer]]
-unsigned long size
--
-unsigned long align
--
-unsigned long flags
--
**返り値 [#jdd4a0d7]
-int
--
**参考 [#vbb68662]
*実装 [#oa77e234]
static int ion_carveout_heap_allocate(struct ion_heap *h...
struct ion_buffer ...
unsigned long size...
unsigned long flags)
{
struct sg_table *table;
ion_phys_addr_t paddr;
int ret;
-
--[[linux-4.4.1/sg_table]]
--[[linux-4.4.1/ion_phys_addr_t]]
if (align > PAGE_SIZE)
return -EINVAL;
-
--[[linux-4.4.1/PAGE_SIZE]]
table = kmalloc(sizeof(struct sg_table), GFP_KER...
if (!table)
return -ENOMEM;
ret = sg_alloc_table(table, 1, GFP_KERNEL);
if (ret)
goto err_free;
-
--[[linux-4.4.1/kmalloc()]]
--[[linux-4.4.1/sg_alloc_table()]]
paddr = ion_carveout_allocate(heap, size, align);
if (paddr == ION_CARVEOUT_ALLOCATE_FAIL) {
ret = -ENOMEM;
goto err_free_table;
}
-
--[[linux-4.4.1/ion_carveout_allocate()]]
sg_set_page(table->sgl, pfn_to_page(PFN_DOWN(pad...
buffer->priv_virt = table;
-
--[[linux-4.4.1/sg_set_page()]]
--[[linux-4.4.1/pfn_to_page()]]
--[[linux-4.4.1/PFN_DOWN()]]
return 0;
err_free_table:
sg_free_table(table);
err_free:
kfree(table);
return ret;
-
--[[linux-4.4.1/sg_free_table()]]
--[[linux-4.4.1/kfree()]]
}
*コメント [#zfe73ed9]
終了行:
*参照元 [#m81896d3]
#backlinks
*説明 [#v6a0a75b]
-パス: [[linux-4.4.1/drivers/staging/android/ion/ion_carv...
-FIXME: これは何?
--説明
**引数 [#y317538a]
-struct ion_heap *heap
--
--[[linux-4.4.1/ion_heap]]
-struct ion_buffer *buffer
--
--[[linux-4.4.1/ion_buffer]]
-unsigned long size
--
-unsigned long align
--
-unsigned long flags
--
**返り値 [#jdd4a0d7]
-int
--
**参考 [#vbb68662]
*実装 [#oa77e234]
static int ion_carveout_heap_allocate(struct ion_heap *h...
struct ion_buffer ...
unsigned long size...
unsigned long flags)
{
struct sg_table *table;
ion_phys_addr_t paddr;
int ret;
-
--[[linux-4.4.1/sg_table]]
--[[linux-4.4.1/ion_phys_addr_t]]
if (align > PAGE_SIZE)
return -EINVAL;
-
--[[linux-4.4.1/PAGE_SIZE]]
table = kmalloc(sizeof(struct sg_table), GFP_KER...
if (!table)
return -ENOMEM;
ret = sg_alloc_table(table, 1, GFP_KERNEL);
if (ret)
goto err_free;
-
--[[linux-4.4.1/kmalloc()]]
--[[linux-4.4.1/sg_alloc_table()]]
paddr = ion_carveout_allocate(heap, size, align);
if (paddr == ION_CARVEOUT_ALLOCATE_FAIL) {
ret = -ENOMEM;
goto err_free_table;
}
-
--[[linux-4.4.1/ion_carveout_allocate()]]
sg_set_page(table->sgl, pfn_to_page(PFN_DOWN(pad...
buffer->priv_virt = table;
-
--[[linux-4.4.1/sg_set_page()]]
--[[linux-4.4.1/pfn_to_page()]]
--[[linux-4.4.1/PFN_DOWN()]]
return 0;
err_free_table:
sg_free_table(table);
err_free:
kfree(table);
return ret;
-
--[[linux-4.4.1/sg_free_table()]]
--[[linux-4.4.1/kfree()]]
}
*コメント [#zfe73ed9]
ページ名: