From: Martijn Coenen Date: Tue, 14 Nov 2017 16:04:12 +0000 (+0100) Subject: ANDROID: binder: clarify deferred thread work. X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=c2f3d65ff95fa05a55cc62cab38ce008b5b156ab;p=GitHub%2FLineageOS%2Fandroid_kernel_samsung_universal7580.git ANDROID: binder: clarify deferred thread work. Rename the function to more accurately reflect what it does, and add a comment explaining why we use it. Change-Id: I8d011c017dfc6e24b5b54fc462578f8e153e5926 Signed-off-by: Martijn Coenen --- diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 735782b6a51..02ef0d319e3 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -844,7 +844,7 @@ binder_enqueue_work_ilocked(struct binder_work *work, } /** - * binder_enqueue_thread_work_ilocked_nowake() - Add thread work + * binder_enqueue_deferred_thread_work_ilocked() - Add deferred thread work * @thread: thread to queue work to * @work: struct binder_work to add to list * @@ -855,8 +855,8 @@ binder_enqueue_work_ilocked(struct binder_work *work, * Requires the proc->inner_lock to be held. */ static void -binder_enqueue_thread_work_ilocked_nowake(struct binder_thread *thread, - struct binder_work *work) +binder_enqueue_deferred_thread_work_ilocked(struct binder_thread *thread, + struct binder_work *work) { binder_enqueue_work_ilocked(work, &thread->todo); } @@ -3341,7 +3341,14 @@ static void binder_transaction(struct binder_proc *proc, } else if (!(t->flags & TF_ONE_WAY)) { BUG_ON(t->buffer->async_transaction != 0); binder_inner_proc_lock(proc); - binder_enqueue_thread_work_ilocked_nowake(thread, tcomplete); + /* + * Defer the TRANSACTION_COMPLETE, so we don't return to + * userspace immediately; this allows the target process to + * immediately start processing this transaction, reducing + * latency. We will then return the TRANSACTION_COMPLETE when + * the target replies (or there is an error). + */ + binder_enqueue_deferred_thread_work_ilocked(thread, tcomplete); t->need_reply = 1; t->from_parent = thread->transaction_stack; thread->transaction_stack = t;