sched: wqueue: Remove sched_[un]lock from kwork_inherit.c

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>
This commit is contained in:
hujun5 2023-12-11 11:59:12 +08:00 committed by Xiang Xiao
parent 4482d7b882
commit a4aad284eb
1 changed files with 0 additions and 4 deletions

View File

@ -219,7 +219,6 @@ void lpwork_boostpriority(uint8_t reqprio)
/* Prevent context switches until we get the priorities right */ /* Prevent context switches until we get the priorities right */
flags = enter_critical_section(); flags = enter_critical_section();
sched_lock();
/* Adjust the priority of every worker thread */ /* Adjust the priority of every worker thread */
@ -228,7 +227,6 @@ void lpwork_boostpriority(uint8_t reqprio)
lpwork_boostworker(lpwork().worker[wndx].pid, reqprio); lpwork_boostworker(lpwork().worker[wndx].pid, reqprio);
} }
sched_unlock();
leave_critical_section(flags); leave_critical_section(flags);
} }
@ -265,7 +263,6 @@ void lpwork_restorepriority(uint8_t reqprio)
/* Prevent context switches until we get the priorities right */ /* Prevent context switches until we get the priorities right */
flags = enter_critical_section(); flags = enter_critical_section();
sched_lock();
/* Adjust the priority of every worker thread */ /* Adjust the priority of every worker thread */
@ -274,7 +271,6 @@ void lpwork_restorepriority(uint8_t reqprio)
lpwork_restoreworker(lpwork().worker[wndx].pid, reqprio); lpwork_restoreworker(lpwork().worker[wndx].pid, reqprio);
} }
sched_unlock();
leave_critical_section(flags); leave_critical_section(flags);
} }