Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 88c3fd64 authored by Carlos Llamas's avatar Carlos Llamas Committed by Todd Kjos
Browse files

ANDROID: binder: fold common setup of node_prio



The setup of node_prio is always the same, so just fold this logic into
binder_transaction_priority() to avoid duplication. Let's pass the node
reference instead, which also gives access to node->inherit_rt.

There is no functional impact from this patch.

Bug: 148101660
Signed-off-by: default avatarCarlos Llamas <cmllamas@google.com>
Change-Id: Ib390204556e69c4bc8492cd9cd873773f9cdce42
(cherry picked from commit 498bf715b77c68e54d0289fa66e3f112278f87dc)
[cmllamas: fixed minor merge conflicts]
parent fffb2b5b
Loading
Loading
Loading
Loading
+8 −13
Original line number Diff line number Diff line
@@ -727,10 +727,13 @@ static void binder_restore_priority(struct task_struct *task,

static void binder_transaction_priority(struct task_struct *task,
					struct binder_transaction *t,
					struct binder_priority node_prio,
					bool inherit_rt)
					struct binder_node *node)
{
	struct binder_priority desired_prio = t->priority;
	const struct binder_priority node_prio = {
		.sched_policy = node->sched_policy,
		.prio = node->min_priority,
	};

	if (t->set_priority_called)
		return;
@@ -739,7 +742,7 @@ static void binder_transaction_priority(struct task_struct *task,
	t->saved_priority.sched_policy = task->policy;
	t->saved_priority.prio = task->normal_prio;

	if (!inherit_rt && is_rt_policy(desired_prio.sched_policy)) {
	if (!node->inherit_rt && is_rt_policy(desired_prio.sched_policy)) {
		desired_prio.prio = NICE_TO_PRIO(0);
		desired_prio.sched_policy = SCHED_NORMAL;
	}
@@ -2488,14 +2491,11 @@ static int binder_proc_transaction(struct binder_transaction *t,
				    struct binder_thread *thread)
{
	struct binder_node *node = t->buffer->target_node;
	struct binder_priority node_prio;
	bool oneway = !!(t->flags & TF_ONE_WAY);
	bool pending_async = false;

	BUG_ON(!node);
	binder_node_lock(node);
	node_prio.prio = node->min_priority;
	node_prio.sched_policy = node->sched_policy;

	if (oneway) {
		BUG_ON(thread);
@@ -2523,8 +2523,7 @@ static int binder_proc_transaction(struct binder_transaction *t,
		thread = binder_select_thread_ilocked(proc);

	if (thread) {
		binder_transaction_priority(thread->task, t, node_prio,
					    node->inherit_rt);
		binder_transaction_priority(thread->task, t, node);
		binder_enqueue_thread_work_ilocked(thread, &t->work);
	} else if (!pending_async) {
		binder_enqueue_work_ilocked(&t->work, &proc->todo);
@@ -4197,14 +4196,10 @@ static int binder_thread_read(struct binder_proc *proc,
		BUG_ON(t->buffer == NULL);
		if (t->buffer->target_node) {
			struct binder_node *target_node = t->buffer->target_node;
			struct binder_priority node_prio;

			trd->target.ptr = target_node->ptr;
			trd->cookie =  target_node->cookie;
			node_prio.sched_policy = target_node->sched_policy;
			node_prio.prio = target_node->min_priority;
			binder_transaction_priority(current, t, node_prio,
						    target_node->inherit_rt);
			binder_transaction_priority(current, t, target_node);
			cmd = BR_TRANSACTION;
		} else {
			trd->target.ptr = 0;