Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

change nxsched_islocked_global to nxsched_islocked_tcb #13716

Merged
merged 2 commits into from
Oct 5, 2024

Commits on Sep 29, 2024

  1. sched: change nxsched_islocked_global to nxsched_islocked_tcb

    reason:
    1 To improve efficiency, we mimic Linux's behavior where preemption disabling is only applicable to the current CPU and does not affect other CPUs.
    2 In the future, we will implement "spinlock+sched_lock", and use it extensively. Under such circumstances, if preemption is still globally disabled, it will seriously impact the scheduling efficiency.
    3 We have removed g_cpu_lockset and used irqcount in order to eliminate the dependency of schedlock on critical sections in the future, simplify the logic, and further enhance the performance of sched_lock.
    4 We set lockcount to 1 in order to lock scheduling on all CPUs during startup, without the need to provide additional functions to disable scheduling on other CPUs.
    5 Cpu1~n must wait for cpu0 to enter the idle state before enabling scheduling because it prevents CPUs1~n from competing with cpu0 for the memory manager mutex, which could cause the cpu0 idle task to enter a wait state and trigger an assert.
    
    size nuttx
    before:
       text    data     bss     dec     hex filename
     265396   51057   63646  380099   5ccc3 nuttx
    after:
       text    data     bss     dec     hex filename
     265184   51057   63642  379883   5cbeb nuttx
    
    size -216
    
    Configuring NuttX and compile:
    $ ./tools/configure.sh -l qemu-armv8a:nsh_smp
    $ make
    Running with qemu
    $ 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
    
    Signed-off-by: hujun5 <[email protected]>
    hujun260 committed Sep 29, 2024
    Configuration menu
    Copy the full SHA
    13ff01f View commit details
    Browse the repository at this point in the history
  2. sched/sched: next pointer value is definitely not null

    Signed-off-by: hujun5 <[email protected]>
    hujun260 committed Sep 29, 2024
    Configuration menu
    Copy the full SHA
    96d0aae View commit details
    Browse the repository at this point in the history