这是我的代码的相关部分.
struct List_head * p;struct task_struct ts,*tsk;pID_t tmp_pID;INIT_List_head(&ts.children);current = tsk;List_for_each(p,&(tsk->children)){ ts = *List_entry(p,struct task_struct,children); tmp_pID = ts.pID; printk("the pID is %d\n",tmp_pID);}
我认为问题在于List_entry但我不知道如何解决它,我能找到的所有例子似乎都是以同样的方式调用它.
这应该打印出所有子PID,而不是我总是得到相同的数字-17 ….它是10 ^ 9或10 ^ 11的数量级.
有人可以帮我从这里出去吗?编译大约需要30分钟,所以尝试记录不同的东西并不是一个真正的选择.
解决方法 你应该使用List_entry(p,sibling);
不
List_entry(p,children);
何而且,当你经过孩子们时,你应该锁定taskList_lock.
总结以上是内存溢出为你收集整理的linux-kernel – 在linux内核中遍历task_struct-> children全部内容,希望文章能够帮你解决linux-kernel – 在linux内核中遍历task_struct-> children所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)