amd64下基于per_cpu变量current_task获取task_struct¶
-
获取current_task地址

-
获取task_struct指针
获取当前正在运行的cpu所属线程:

从上图看到有8个cpu,可以改动qemu虚拟化时
-smp 8参数调整cpu个数。__per_cpu_offset[4]中的下标4需要与info threads对应上。0x15cc0为nm vmlinux | grep current_task获取的current_task地址。 -
获取进程号
-
获取进程名

如果上述
__per_cpu_offset[4]下标不对,获取的都是内核0号idle进程。
More¶
- 一张图看懂linux内核中percpu变量的实现
- linux 进程内核栈
- linux 内核task_struct 源码分析与解析(整合配图)
- amd64下基于qemu调试uos-v20-1060-amd64