yamt-idlelwp branchに関する議論のスレッドで発見したパッチの解析
NetBSD-currentにはschedcpu()がないで少し言及したyamt-idlelwp branchに関する議論のスレッドで発見したパッチを解析してみた。
このパッチは恐らくスケジューラのモジュール化を目的としており、4.0からcurrentのコードへ至る途中の段階がどうなっていたかが解るものとなっていた。
関数コール・代入変数名の変更
- rqinit() -> sched_rqinit()
- schedcpu(NULL) -> sched_setup()
- ci->ci_schedstate.spc_rrticks -> ci->ci_schedstate.spc_ticks
- roundrobin(ci) -> sched_tick(ci)
- scheduler_wait_hook(parent, p) -> sched_proc_exit(parent, p)
- scheduler_fork_hook(p1, p2) -> sched_proc_fork(p1, p2)
- setrunqueue(l) -> sched_enqueue(l)
- chgp->p_nice = n; resetprocpriority(chgp); -> sched_nice(chgp, p)
- if(l->l_slptime > 1) updatepri(l) -> sched_setrunnable(l)
- nextrunqueue() -> sched_nextlwp()
- remrunqueue(newl) -> sched_dequeue(newl)
- resched_lwp(l, l->l_priority) -> resched_cpu(l, l->l_priority)
関数の改名・削除・移動
kern/kern_synch.c
- schedcpu() -> kern/sched_4bsd.c
- updatepri() -> sched_setrunnable() @ kern/sched_4bsd.c
- sched_changepri() -> resched_cpu()
- roundrobin() -> sched_tick() @ kern/sched_4bsd.c
- decay_cpu() -> kern/sched_4bsd.c
- decay_cpu_batch() -> kern/sched_4bsd.c
- rqinit() -> sched_rqinit() @ kern/sched_4bsd.c
- resched_lwp() -> resched_cpu()にmerge?
- sched_curcpu_runnable_p() -> kern/sched_4bsd.c
- resetpriority() -> kern/sched_4bsd.c
- resetprocpriority() -> sched_nice() @ kern/sched_4bsd.c
- schedclock() -> kern/sched_4bsd.c
- scheduler_fork_hook() -> sched_proc_fork() @ sched_4bsd.c
- scheduler_wait_hook() -> sched_proc_exit() @ sched_4bsd.c
- checkrunqueue() -> ? @ kern/kern_runq.c
- setrunqueue() -> sched_enqueue() @ kern/kern_runq.c
- remrunqueue() -> sched_dequeue() @ kern/kern_runq.c
- nextrunqueue() -> sched_nextlwp() @ kern/kern_runq.c
kern/sched_4bsd.c
- sched_setup() <- schedcpu(NULL)