On Friday, August 26, 2022 12:04:41 PM CEST Chan Kim wrote: > 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 > I suppose that "ftrace" is your best friend in this case. YouTube videos may be the easiest introductions. I have not the links to provide, however you may search them using something like the "ftrace Steven Rostedt" keywords (Steven is the author and maintainer). Otherwise read the man pages of the "trace-cmd" set of related userspace programs built with the purpose to serve as interfaces to the kernel "ftrace". In case you need more, you'll have to learn how ftrace actually works and how to write your custom tracers in the kernel. If so, you have no other choice than learning from the official docs at https://docs.kernel.org/trace/ index.html. Regards, Fabio _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies