Process rbtree.h中rb_entry()宏的用途是什么

Process rbtree.h中rb_entry()宏的用途是什么,process,linux-kernel,containers,scheduling,red-black-tree,Process,Linux Kernel,Containers,Scheduling,Red Black Tree,我想知道进程内调度的贡献。宏已在fair.c中定义的中使用 进程及其vruntime存储在哪里。需要详细说明 我不知道如何添加对应于Linux内核红黑树的每个节点的链表,以及如何从新的红黑树执行插入和删除操作 这方面的任何帮助都将非常可观。Linux内核中通常使用宏容器_of()通过从指针中减去来查找结构成员的地址。在本例中,它将从rb_节点获取sched_实体。看这个:我不清楚其他的问题。谢谢你@peter。该链接漂亮地解释了。另一个问题是:在进程调度过程中,进程结构(task_struct)

我想知道进程内调度的贡献。宏已在fair.c中定义的中使用

进程及其vruntime存储在哪里。需要详细说明

我不知道如何添加对应于Linux内核红黑树的每个节点的链表,以及如何从新的红黑树执行插入和删除操作


这方面的任何帮助都将非常可观。

Linux内核中通常使用宏容器_of()通过从指针中减去来查找结构成员的地址。在本例中,它将从rb_节点获取sched_实体。看这个:我不清楚其他的问题。谢谢你@peter。该链接漂亮地解释了。另一个问题是:在进程调度过程中,进程结构(task_struct)和vruntime是否存储在红黑树中。在这两种情况下,它们是如何存储的?如果我想添加一个与红黑树的每个节点对应的链表,那么需要执行哪些步骤。我认为您必须在init time创建另一个rb树,并以与调度程序相同的方式插入/操作它。您可以修改内核以在相同的位置执行此操作。导航源以查看创建rb树的位置和方式,并可能在那里创建另一个单独的树。当前该函数为rb_条目(父级、结构sched_实体、运行_节点),其中父级和运行_节点均为rb_节点类型。但我的实现包括rb_节点类型的父节点和链接_列表_节点类型的运行_节点。执行此操作时,容器的bcoz_of()将发生不兼容类型错误。因此,我想知道如何避免错误并达到目标。另外,请给我任何工具的名称,这些工具可以帮助我可视化对内核源代码所做的更改,并像任何C或Java程序一样进行调试。谢谢@Peter..调试内核很困难,因为大多数平台没有任何简单的方法来逐步完成代码。您可以使用printk()语句进行简单的调试。还可以查看Jprobes和Kprobes。您可以在上按平台和版本在线查看内核源代码。随时间推移进入内核的修补程序列表也可用: