看了小白君的代码
int get_current_task() { int i_ret; int i; i_ret = *(int *)(((unsigned int)&i & 0xFFFFE000) + 0xC); return i_ret; }
但是为啥返回值是0呢?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
ele7enxxh 因为应用层获取不到。。这是内核结构体。。
task_struct是由内核线程栈顶的thread_info结构体间接获取的,thread_info必须得在kernel上下文中执行时,通过 { sp[或局部变量] & ~(内核线程栈大小-1) } 计算才是有效的。