*参照元 [#uc616b60] #backlinks *説明 [#wd74b82f] -パス: [[linux-4.4.1/drivers/staging/android/ion/ion.c]] -FIXME: これは何? --説明 **引数 [#e1935930] -struct kref *kref -- --[[linux-4.4.1/kref]] **返り値 [#v1a4ce4e] -なし **参考 [#jfe1a4d1] *実装 [#g52131c2] static void ion_handle_destroy(struct kref *kref) { struct ion_handle *handle = container_of(kref, struct ion_handle, ref); struct ion_client *client = handle->client; struct ion_buffer *buffer = handle->buffer; - --[[linux-4.4.1/ion_handle]] --[[linux-4.4.1/container_of()]] --[[linux-4.4.1/ion_client]] --[[linux-4.4.1/ion_buffer]] mutex_lock(&buffer->lock); while (handle->kmap_cnt) ion_handle_kmap_put(handle); mutex_unlock(&buffer->lock); - --[[linux-4.4.1/mutex_lock()]] --[[linux-4.4.1/mutex_unlock()]] --[[linux-4.4.1/ion_handle_kmap_put()]] idr_remove(&client->idr, handle->id); if (!RB_EMPTY_NODE(&handle->node)) rb_erase(&handle->node, &client->handles); - --[[linux-4.4.1/idr_remove()]] --[[linux-4.4.1/RB_EMPTY_NODE()]] --[[linux-4.4.1/rb_erase()]] ion_buffer_remove_from_handle(buffer); ion_buffer_put(buffer); - --[[linux-4.4.1/ion_buffer_remove_from_handle()]] --[[linux-4.4.1/ion_buffer_put()]] kfree(handle); - --[[linux-4.4.1/kfree()]] } *コメント [#k5ff85d8]