<br><br><div class="gmail_quote">On Mon, Apr 18, 2011 at 9:17 PM, limp <span dir="ltr">&lt;<a href="mailto:johnkyr83@hotmail.com">johnkyr83@hotmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi all,<br>
<br>
I am trying to understand in what extend the PGD (page global directory)<br>
value stored in the CR3 register indicate the running process/thread by the<br>
Linux scheduler.<br></blockquote><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
I know that each process has its own PGD value but what I am confused about<br>
is the value of CR3 register when kernel threads are scheduled.<br>
<br></blockquote><div><br></div><div>yes, each process has its own CR3 value -&gt; u can easily see this when u do a printk() of it....and it is always equal to the process (which is &quot;insmod&quot; usually) that started the kernel module.   i experimented it here:</div>
<div><br></div><div><a href="http://www.issociate.de/board/post/492650/Does_cr3_register_change_when_a_new_process_is_scheduled_?.html">http://www.issociate.de/board/post/492650/Does_cr3_register_change_when_a_new_process_is_scheduled_?.html</a></div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
AFAIK, a &quot;kernel thread&quot; can &#39;borrow&#39; the page-directory that belongs to<br>
another process (i.e. its address space). Does this apply *only* to threads<br></blockquote><div><br></div><div>yes, &quot;borrow&quot; in the sense that:   kernel thread DOES NOT have any process context, and so it can be executed in any process context, and which ever process context it is executing, when u print the CR3 value, it will belong to that process which the kernel thread is currently executing under.</div>
<div><br></div><div>read this:</div><div><br></div><div><a href="http://www.scs.ch/~frey/linux/kernelthreads.html">http://www.scs.ch/~frey/linux/kernelthreads.html</a></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

of the same process (i.e. all the threads of process A are using the PGD<br>
entry of process A) or could also apply to threads not relevant to process<br>
A?<br>
<br>
That is, if a thread is executed and the value of CR3 at the time is<br>
0x1E107000, does this *necessary* mean that a thread of the process with PGD<br>
0xDE107000 is executed *or* a thread not relevant with that process could<br>
have &#39;borrowed&#39; its PGD entry?<br>
<br>
Any help will be greatly appreciated.<br>
<br>
John K.<br>
<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><br clear="all"><br>-- <br>Regards,<br>Peter Teoh<br>