*参照元 [#p389dfca] #backlinks *説明 [#c03fa8d9] -パス: [[linux-4.4.1/drivers/staging/android/ion/ion_heap.c]] -FIXME: これは何? --説明 **引数 [#g3844efe] -struct ion_heap *heap -- --[[linux-4.4.1/ion_heap]] **返り値 [#g4edf6d0] -int -- **参考 [#g40621bb] *実装 [#u927cbb7] int ion_heap_init_deferred_free(struct ion_heap *heap) { struct sched_param param = { .sched_priority = 0 }; - --[[linux-4.4.1/sched_param]] INIT_LIST_HEAD(&heap->free_list); init_waitqueue_head(&heap->waitqueue); heap->task = kthread_run(ion_heap_deferred_free, heap, "%s", heap->name); - -ION バッファの遅延削除を行うカーネルスレッドを開始する。 スレッド名はヒープ名と等しい。 --[[linux-4.4.1/INIT_LIST_HEAD()]] --[[linux-4.4.1/init_waitqueue_head()]] --[[linux-4.4.1/kthread_run()]] --[[linux-4.4.1/ion_heap_deferred_free()]] if (IS_ERR(heap->task)) { pr_err("%s: creating thread for deferred free failed\n", __func__); return PTR_ERR_OR_ZERO(heap->task); } - -カーネルスレッド作成に失敗したらエラー。 --[[linux-4.4.1/IS_ERR()]] --[[linux-4.4.1/pr_err()]] --[[linux-4.4.1/PTR_ERR_OR_ZERO()]] sched_setscheduler(heap->task, SCHED_IDLE, ¶m); return 0; - -カーネルスレッドの優先度を IDLE まで下げる。スレッドは極めて低い優先度で実行される。 --[[linux-4.4.1/sched_setscheduler()]] } *コメント [#k0f8e9f8]