sched/signal: There is no need to use sched_[un]lock
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.
@hujun260 some ltp test case fail: https://github.com/apache/nuttx/actions/runs/8949322132/job/24583521866?pr=12283
@hujun260 As I commented in https://github.com/apache/nuttx/pull/12140#issuecomment-2062948378 You replaced replaced sched_lock with critical section in sig_default.c, so you should create a separate commit for it. Also, you moved leave_critical_section() into sig_pselect.c and sig_suspend.c, so we need a clearer description for it.
@hujun260 please take a look at @anchao comments
@hujun260 please take a look at @anchao comments
I update the patch