Skip to content

Commit

Permalink
sched/wqueue: There is no need to use sched_[un]lock
Browse files Browse the repository at this point in the history
purpose:
1 sched_lock is very time-consuming, and reducing its invocations can improve performance.
2 sched_lock is prone to misuse, and narrowing its scope of use is to prevent people from referencing incorrect code and using it

test:
We can use qemu for testing.
compiling
make distclean -j20; ./tools/configure.sh -l qemu-armv8a:nsh_smp ;make -j20
running
qemu-system-aarch64 -cpu cortex-a53 -smp 4 -nographic -machine virt,virtualization=on,gic-version=3 -net none -chardev stdio,id=con,mux=on -serial chardev:con -mon chardev=con,mode=readline -kernel ./nuttx

We have also tested this patch on other ARM hardware platforms.

Signed-off-by: hujun5 <hujun5@xiaomi.com>
  • Loading branch information
hujun260 committed Apr 15, 2024
1 parent 3ce84d1 commit 421469b
Showing 1 changed file with 0 additions and 4 deletions.
4 changes: 0 additions & 4 deletions sched/wqueue/kwork_inherit.c
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,6 @@ void lpwork_boostpriority(uint8_t reqprio)
/* Prevent context switches until we get the priorities right */

flags = enter_critical_section();
sched_lock();

/* Adjust the priority of every worker thread */

Expand All @@ -228,7 +227,6 @@ void lpwork_boostpriority(uint8_t reqprio)
lpwork_boostworker(lpwork().worker[wndx].pid, reqprio);
}

sched_unlock();
leave_critical_section(flags);
}

Expand Down Expand Up @@ -265,7 +263,6 @@ void lpwork_restorepriority(uint8_t reqprio)
/* Prevent context switches until we get the priorities right */

flags = enter_critical_section();
sched_lock();

/* Adjust the priority of every worker thread */

Expand All @@ -274,7 +271,6 @@ void lpwork_restorepriority(uint8_t reqprio)
lpwork_restoreworker(lpwork().worker[wndx].pid, reqprio);
}

sched_unlock();
leave_critical_section(flags);
}

Expand Down

0 comments on commit 421469b

Please sign in to comment.