由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
CS版 - 弱弱的问个内核遍历当前进程的子进程的一小段程序 (转载)
相关主题
问个图的算法出题了! std::copy()
弱弱的问个 统计 问题。请教一算法问题
急问个优化的问题大家看看我这个C++ STL Functor那里写错了
em算法里log-likelihood = -inf怎样遍历一个字母的组合
问一个C++下计时的问题C++(非VC++) 删除链表时如何对指针操作? 在线等回复!谢谢!
Help for C language请教一个多维遍历问题
曾经有个教授对我说,最难的算法问题就是。。。 (转载)One question about Void pointer (转载)
怎么用lex处理DFA?求教:多个有序数组怎么合并最快? (转载)
相关话题的讨论汇总
话题: list话题: struct话题: head话题: pos话题: children
进入CS版参与讨论
1 (共1页)
m********o
发帖数: 796
1
【 以下文字转载自 Linux 讨论区 】
发信人: momoxinduo (馍馍), 信区: Linux
标 题: 弱弱的问个内核遍历当前进程的子进程的一小段程序
发信站: BBS 未名空间站 (Wed Aug 21 01:23:39 2013, 美东)
linux内核里遍历当前进程的子进程的一小段程序有点看不太明白
struct task_struct *task;
struct list_head *list;
/* 这里的 struct list_head 的定义是两个指向他自己的指针
* struct list_head
* {
* struct list_head *next, *prev;
* }; */
/* 下面的list_for_each宏定义
*list_for_each - iterate over a list
* @pos: the &struct list_head to use as a loop cursor.
* @head: the head for your list. */

#define list_for_each(pos, head)
for (pos = (head)->next; prefetch(pos->next), pos != (head); pos =
pos->next) */
/* 这里的children也是struct list_head children;*/
list_for_each(list, ¤t->children)
{
task = list_entry(list, struct task_struct, sibling);
/* task now points to one of current’s children */
}
哪位大大能解释一下list_for_each怎么工作的?list_for_each(list, ¤t->
children), 这里的list和children都是 struct list_head类型,按照list_for_each
定义,把children的next指针(单个指针)赋给list(包含两个指针)?
n******t
发帖数: 4406
2
这就是标准的list 遍历,有什么问题么?无非写成了宏省事而已。

【在 m********o 的大作中提到】
: 【 以下文字转载自 Linux 讨论区 】
: 发信人: momoxinduo (馍馍), 信区: Linux
: 标 题: 弱弱的问个内核遍历当前进程的子进程的一小段程序
: 发信站: BBS 未名空间站 (Wed Aug 21 01:23:39 2013, 美东)
: linux内核里遍历当前进程的子进程的一小段程序有点看不太明白
: struct task_struct *task;
: struct list_head *list;
: /* 这里的 struct list_head 的定义是两个指向他自己的指针
: * struct list_head
: * {

k**********g
发帖数: 989
3

Bi-directional circular linked list.

【在 m********o 的大作中提到】
: 【 以下文字转载自 Linux 讨论区 】
: 发信人: momoxinduo (馍馍), 信区: Linux
: 标 题: 弱弱的问个内核遍历当前进程的子进程的一小段程序
: 发信站: BBS 未名空间站 (Wed Aug 21 01:23:39 2013, 美东)
: linux内核里遍历当前进程的子进程的一小段程序有点看不太明白
: struct task_struct *task;
: struct list_head *list;
: /* 这里的 struct list_head 的定义是两个指向他自己的指针
: * struct list_head
: * {

k**********g
发帖数: 989
4

这里 list 的名字取得不好。在循环里面,list 的值是改变的,就正如 for (index
= 0; index < 10; ++index) 里面 index 的值改变一样。用C++的说法,list 就是
iterator 或是 pointer to item。
但循环结束後,循环链表的指针回到起点,因此 list 的结束值和它的开始值一样。

【在 m********o 的大作中提到】
: 【 以下文字转载自 Linux 讨论区 】
: 发信人: momoxinduo (馍馍), 信区: Linux
: 标 题: 弱弱的问个内核遍历当前进程的子进程的一小段程序
: 发信站: BBS 未名空间站 (Wed Aug 21 01:23:39 2013, 美东)
: linux内核里遍历当前进程的子进程的一小段程序有点看不太明白
: struct task_struct *task;
: struct list_head *list;
: /* 这里的 struct list_head 的定义是两个指向他自己的指针
: * struct list_head
: * {

1 (共1页)
进入CS版参与讨论
相关主题
求教:多个有序数组怎么合并最快? (转载)问一个C++下计时的问题
帮看看这段code (转载)Help for C language
问一个很初级的编程问题曾经有个教授对我说,最难的算法问题就是。。。 (转载)
chrome可以正常使用,IE对所有网站都是HTTP 403错误怎么用lex处理DFA?
问个图的算法出题了! std::copy()
弱弱的问个 统计 问题。请教一算法问题
急问个优化的问题大家看看我这个C++ STL Functor那里写错了
em算法里log-likelihood = -inf怎样遍历一个字母的组合
相关话题的讨论汇总
话题: list话题: struct话题: head话题: pos话题: children