Hi Glenn:<br><br>I just checked the book and browse some on-line documents. The first three lines in scheduler_tick(void) are :<br><br><b>    int cpu = smp_processor_id();<br>    struct rq *rq = cpu_rq(cpu);<br>    struct task_struct *curr = rq->curr;</b><br>
<br>Here, curr points to currently running task of this running queue and struct rq is also per-cpu variable. In original linux 2.6.32, it has two queues, cfs queue and rt queue. After applying LITMUS patch, we have another litmus_rq in struct rq. Anyway, only one process is currently running for this per-cpu running queue. And it is may be from any of the above three queues or idle task. So, what is the difference between curr and current ? If they were the same, why do not use curr instead we have to spend some time on deriving current.<br>
<br>Thanks.<br><br><br><br><div class="gmail_quote">On Fri, Feb 17, 2012 at 10:00 AM, Hang Su <span dir="ltr"><<a href="mailto:hangsu.cs@gmail.com">hangsu.cs@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thanks for your tips. I will check that book.<div class="HOEnZb"><div class="h5"><br><br><div class="gmail_quote">On Fri, Feb 17, 2012 at 9:50 AM, Glenn Elliott <span dir="ltr"><<a href="mailto:gelliott@cs.unc.edu" target="_blank">gelliott@cs.unc.edu</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Hi Hang Su,<div><br></div><div>"current" is a Linux thing.  "current" is a per-processor global variable (it may actually be a macro, but it functions as a global variable) that points the current process (aka task_struct) that is scheduled on the processor that is executing the given code path.</div>

<div><br></div><div>If you are going to be doing a lot of Linux kernel development, I highly recommend that you get a copy of "Understanding the Linux Kernel" by Bovet & Cesati (published by O'Reilly).  It has all this sort of information and is a great reference.</div>

<div><br></div><div>-Glenn</div><div><br></div><div><br><div><div><div><div>On Feb 17, 2012, at 10:39 AM, Hang Su wrote:</div><br></div></div><blockquote type="cite"><div><div>Hi All:<br><br>I am finding the definition of a global variable<b> current</b> used inside scheduler_tick() under /kernel/sched.c. But I did not get where it is.<br>

<br>Thanks. <br></div></div>
_______________________________________________<br>litmus-dev mailing list<br><a href="mailto:litmus-dev@lists.litmus-rt.org" target="_blank">litmus-dev@lists.litmus-rt.org</a><br><a href="https://lists.litmus-rt.org/listinfo/litmus-dev" target="_blank">https://lists.litmus-rt.org/listinfo/litmus-dev</a><br>

</blockquote></div><br></div></div><br>_______________________________________________<br>
litmus-dev mailing list<br>
<a href="mailto:litmus-dev@lists.litmus-rt.org" target="_blank">litmus-dev@lists.litmus-rt.org</a><br>
<a href="https://lists.litmus-rt.org/listinfo/litmus-dev" target="_blank">https://lists.litmus-rt.org/listinfo/litmus-dev</a><br>
<br></blockquote></div><br>
</div></div></blockquote></div><br>