*参照元 [#l0e4918f]
#backlinks

*説明 [#e423bb9c]
-パス: [[linux-4.4.1/drivers/staging/android/ion/ion_heap.c]]

-FIXME: これは何?
--ION バッファの遅延削除を行うカーネルスレッドのメイン関数。


**引数 [#eb2dd8a0]
-void *data
--
--ION ヒープへのポインタ


**返り値 [#b32b0d88]
-int
--常に 0 だが、このカーネルスレッドは終了しないので意味なし


**参考 [#uadfa1c7]

free_list に ION バッファを追加する(つまり ION バッファの遅延削除を要請する)関数

-[[linux-4.4.1/ion_heap_freelist_add()]]


*実装 [#adbf127e]
 static int ion_heap_deferred_free(void *data)
 {
 	struct ion_heap *heap = data;
 
-スレッドの引数(kthread_run の第二引数など)を参照。
--[[linux-4.4.1/ion_heap]]

 	while (true) {
 		struct ion_buffer *buffer;
 
-
--[[linux-4.4.1/ion_buffer]]

 		wait_event_freezable(heap->waitqueue,
 				     ion_heap_freelist_size(heap) > 0);
 
-free_list にバッファが追加されるまで待つ。
--[[linux-4.4.1/wait_event_freezable()]]
--[[linux-4.4.1/ion_heap_freelist_size()]]

 		spin_lock(&heap->free_lock);
 		if (list_empty(&heap->free_list)) {
 			spin_unlock(&heap->free_lock);
 			continue;
 		}
 		buffer = list_first_entry(&heap->free_list, struct ion_buffer,
 					  list);
 		list_del(&buffer->list);
 		heap->free_list_size -= buffer->size;
 		spin_unlock(&heap->free_lock);
-free_list から遅延削除対象のバッファを 1つ取ってくる。
--[[linux-4.4.1/spin_lock()]]
--[[linux-4.4.1/spin_unlock()]]
--[[linux-4.4.1/list_empty()]]
--[[linux-4.4.1/list_first_entry()]]
--[[linux-4.4.1/list_del()]]

 		ion_buffer_destroy(buffer);
-ION バッファを削除する。
--[[linux-4.4.1/ion_buffer_destroy()]]

 	}
 
 	return 0;
 }


*コメント [#z3fcf387]

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