Using printk, how can I know where the kernel jumps after schedule() function?

Chan Kim ckim at etri.re.kr
Fri Aug 26 06:04:41 EDT 2022


Hello experts,

I am faced with a problem on my experiment. (arm64)
When the linux kernel boots and after it jumped to /bin/sh in the initramfs
(by busybox), it hangs after the program jumps the schedule() function.
I can see it comes out of schedule() function using printk, but I don't know
where it had gone(or returned).
I tried printing the bottom two values in the schedule() function, because
the x29(=fp) and x30(=lr) is stored at the stack bottom during any function.
But the lr value is somewhere in then init stack(by examining the
System.map). So I guessed that lr value, a virtual address is a user virtual
address.. Is my guess correct or should the lr value point to a point in
kernel text section?

Actually I don't know exactly  how a user program is interrupted by the
schedule function initiated by the timer interrupt so I would be grateful if
someone explain it.
( I tried reading part of a book or web posts but didn't get what I want
yet). 

Thank you!
Regards,

Chan Kim







More information about the Kernelnewbies mailing list