<div dir="ltr"><div><div>Hi MJ,<br><br></div><div>The switch_to(prev, next) function stores the registers of task &quot;prev&quot; to its kernel stack, than restores registers<br>of task &quot;next&quot; from its kernel stack than resumes task &quot;next&quot; in kernel mode.<br>
</div><div>If the selected task is a user process, it just takes the &quot;return to user&quot; path to user space.<br></div><div><br></div>Regards, <br></div>MH<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Fri, Jan 3, 2014 at 6:31 PM, Mj Embd <span dir="ltr">&lt;<a href="mailto:mj.embd@gmail.com" target="_blank">mj.embd@gmail.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,<br>
<br>
A very basic question.<br>
AFAIK schedule() selects the next process to run.<br>
Now once it has selected the process, and say if the process is a user<br>
space or kernel space one. how does the switch to user happens,<br>
<br>
a) Is it in schedule function . it has to be a arch level function<br>
called from schedule()<br>
<br>
b) or Else where, so is there a umberlla function like<br>
<br>
somefunc()<br>
{<br>
task_ptr = schedule();<br>
switch_to(task_ptr)<br>
<br>
...<br>
<br>
}<br>
<br>
Can someone explain this<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>