<div dir="ltr"><div>I find that the free electrons LXR has the best search capabilities:<br><br><a href="http://lxr.free-electrons.com/source/include/linux/rbtree.h#L35">http://lxr.free-electrons.com/source/include/linux/rbtree.h#L35</a><br><br></div>-M<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 16, 2015 at 10:56 AM, Ruben Safir <span dir="ltr">&lt;<a href="mailto:ruben@mrbrklyn.com" target="_blank">ruben@mrbrklyn.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I&#39;m trying to find rb_node&#39;s structure and I can&#39;t find it with ctags or<br>
in the <a href="http://lxr.linux.no" target="_blank">http://lxr.linux.no</a> website.<br>
<br>
<br>
How do you search these things out?<br>
<br>
<br>
Ruben<br>
<br>
On Thu, Apr 09, 2015 at 10:52:03PM -0400, nick wrote:<br>
&gt;<br>
&gt;<br>
&gt; On 2015-04-09 10:12 PM, Ruben Safir wrote:<br>
&gt; &gt; On 04/09/2015 10:00 PM, nick wrote:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; On 2015-04-09 09:51 PM, Ruben Safir wrote:<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; It is passover so I&#39;ve read over much of this text, but I have to say<br>
&gt; &gt;&gt;&gt; that in general, I&#39;m way ahead of this book.  Although I have limited<br>
&gt; &gt;&gt;&gt; knowledge of Kernel technology in the specific, the C code, data<br>
&gt; &gt;&gt;&gt; structs, and programming concepts are spoon feed in this text and its<br>
&gt; &gt;&gt;&gt; wasting too much time with words that are more easily explained with<br>
&gt; &gt;&gt;&gt; coding examples and UML charts.  I don&#39;t need a chapter explaining how<br>
&gt; &gt;&gt;&gt; to use ps and the basis of Unix architecture.  This text is targeted to<br>
&gt; &gt;&gt;&gt; a different audience, and FWIW, I&#39;m not certain it does a good job of<br>
&gt; &gt;&gt;&gt; that either.  The guys who write these texts fall in love with their own<br>
&gt; &gt;&gt;&gt; voices.  I know, I&#39;ve suffered this disease myself when I&#39;ve written<br>
&gt; &gt;&gt;&gt; tech articles and books.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; I can&#39;&#39;t recommend this book to anyone.  Anyone who doesn&#39;t understand<br>
&gt; &gt;&gt;&gt; the basics of I/O processer blocks is not going to understand<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; static void update_curr(struct cfs_rq *cfs_rq)<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; and OTOH void update_curr(struct cfs_rq *cfs_rq) is not explained well<br>
&gt; &gt;&gt;&gt; enough for coders unfamiliar with the kernel data structs of which BTW<br>
&gt; &gt;&gt;&gt; struct cfs_rq is not one defined in the text.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; :(<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; I&#39;m looking for something more like this, but flushed out more as a textbook<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; <a href="http://www.ibm.com/developerworks/library/l-completely-fair-scheduler/index.html" target="_blank">http://www.ibm.com/developerworks/library/l-completely-fair-scheduler/index.html</a>,<br>
&gt; &gt;&gt;&gt; and some mentoring, I hope.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; Ruben<br>
&gt; &gt;&gt;&gt;<br>
&gt;<br>
&gt; &gt;&gt; Ruben,<br>
&gt; &gt;&gt; The book is for an intro to the kernel not a complete walk through of each subsystem.<br>
&gt; &gt;&gt; If that is the case,why not read the subsystem code and docs in the kernel. I am a<br>
&gt; &gt;&gt; novice myself in terms of patch and coding experience but will be glad to explain the<br>
&gt; &gt;&gt; code as I have read lots of it.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; Thank you nick.  Yes, I downloaded the entire source from Kernel.org and<br>
&gt; &gt; it is sitting on both my laptop and in virtual machines where I have<br>
&gt; &gt; already compiled some stuff and not broken my VMs yets :)<br>
&gt; &gt;<br>
&gt; &gt; I&#39;m looking over  /home/ruben/linux-3.19.3/Documentation/scheduler<br>
&gt; &gt; [ruben@stat13 scheduler]$ ls<br>
&gt; &gt;<br>
&gt; &gt; 00-INDEX   sched-deadline.txt     sched-rt-group.txt<br>
&gt; &gt; media=legal -o sides=two-sided-long-edg  sched-design-CFS.txt<br>
&gt; &gt; sched-stats.txt sched-arch.txt sched-domains.txt<br>
&gt; &gt; sched-bwc.txt   sched-nice-design.txt<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; I also see in the code there is significant documentation.<br>
&gt; &gt;<br>
&gt; &gt; Right now I am trying to figure out what is the relationship between<br>
&gt; &gt; struct sched_entity and<br>
&gt; &gt; struct cfs_rq and<br>
&gt; &gt; struct rq_of<br>
&gt; &gt;<br>
&gt; &gt; why do we have both??<br>
&gt; &gt;<br>
&gt; The way that these structures  are related is sched_enity is the entity for the task&#39;s scheduling<br>
&gt; information or the task_struct of the a excuting process to be exact. Furthermore  cfs_rq is the<br>
&gt; runquenue on which the task is running or selected to run on by schedule,the main scheduling function<br>
&gt; of the kernel. Finally here is the function definition for rq_of to answer your question,<br>
&gt; static inline struct rq *rq_of(struct cfs_rq *cfs_rq)<br>
&gt; {<br>
&gt;       return cfs_rq-&gt;rq;<br>
&gt; }<br>
&gt; Before asking questions again like this please look into either using lxr or ctags<br>
&gt; to navigate the kernel tree for answers as can be faster then waiting for me or<br>
&gt; someone else to respond.<br>
&gt; Thanks,<br>
&gt; Nick<br>
&gt; &gt; there is a cast in update_curr<br>
&gt; &gt; u64 now = rq_of(cfs_rq)-&gt;clock;<br>
&gt; &gt;<br>
&gt; &gt; or is rq_of a function that returns a pointer is a struct that I missed?<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;&gt; Nick<br>
&gt; &gt;&gt;&gt; On 03/22/2015 08:35 PM, nick wrote:<br>
&gt; &gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt; On 2015-03-22 08:05 PM, Ruben Safir wrote:<br>
&gt; &gt;&gt;&gt;&gt;&gt; On 03/22/2015 07:30 PM, nick wrote:<br>
&gt; &gt;&gt;&gt;&gt;&gt;&gt; I would recommend reading Chapters 3 and  4 of Linux Kernel Development by Robert Love<br>
&gt; &gt;&gt;&gt;&gt;&gt;&gt; as when I was learning the scheduler and process management<br>
&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;&gt; how much has the scheduler changed since then.  It was completely<br>
&gt; &gt;&gt;&gt;&gt;&gt; overhauled when the CFS was created<br>
&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt; The 3rd edition of this book was written after CFS was in the kernel so the chapters<br>
&gt; &gt;&gt;&gt;&gt; are pretty up to date.<br>
&gt; &gt;&gt;&gt;&gt; Nick<br>
&gt; &gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt; &gt;&gt;&gt;&gt;&gt; Kernelnewbies mailing list<br>
&gt; &gt;&gt;&gt;&gt;&gt; <a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
&gt; &gt;&gt;&gt;&gt;&gt; <a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt; _______________________________________________<br>
&gt; &gt;&gt;&gt;&gt; Kernelnewbies mailing list<br>
&gt; &gt;&gt;&gt;&gt; <a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
&gt; &gt;&gt;&gt;&gt; <a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
&gt; &gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt; .<br>
&gt; &gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt; &gt;&gt;&gt; Kernelnewbies mailing list<br>
&gt; &gt;&gt;&gt; <a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
&gt; &gt;&gt;&gt; <a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Kernelnewbies mailing list<br>
&gt; <a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
&gt; <a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
<br>
--<br>
So many immigrant groups have swept through our town<br>
that Brooklyn, like Atlantis, reaches mythological<br>
proportions in the mind of the world - RI Safir 1998<br>
<a href="http://www.mrbrklyn.com" target="_blank">http://www.mrbrklyn.com</a><br>
<br>
DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002<br>
<a href="http://www.nylxs.com" target="_blank">http://www.nylxs.com</a> - Leadership Development in Free Software<br>
<a href="http://www2.mrbrklyn.com/resources" target="_blank">http://www2.mrbrklyn.com/resources</a> - Unpublished Archive<br>
<a href="http://www.coinhangout.com" target="_blank">http://www.coinhangout.com</a> - coins!<br>
<a href="http://www.brooklyn-living.com" target="_blank">http://www.brooklyn-living.com</a><br>
<br>
Being so tracked is for FARM ANIMALS and and extermination camps,<br>
but incompatible with living as a free human being. -RI Safir 2013<br>
<br>
<br>
_______________________________________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
<a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
</blockquote></div><br></div>