<div dir="ltr"><div>struct task_struct { </div><div>volatile long state;</div><div>void *stack;</div><div>...</div><div><b>pid_t pid;</b></div><div>...</div><div>}</div><div>You mean to say that just mapping the <b>pid_t pid</b>  will do the job. Does the linux kernel not store pid somewhere else while forking a child?</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar 21, 2016 at 4:18 PM, Pranay Srivastava <span dir="ltr">&lt;<a href="mailto:pranjas@gmail.com" target="_blank">pranjas@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">Nitin,<br>
<span class=""><br>
<br>
On Mon, Mar 21, 2016 at 4:03 PM, Nitin Varyani &lt;<a href="mailto:varyani.nitin1@gmail.com">varyani.nitin1@gmail.com</a>&gt; wrote:<br>
&gt; .....Continued.... That is, if kernel at Computer 2 finds that pid of a<br>
&gt; process requesting a system call is 1500, the request is forwarded to slave<br>
&gt; daemon which in turn contacts with the master daemon. Master daemon requests<br>
&gt; the kernel for the system call and sends the result back to slave daemon.<br>
<br>
</span>I don&#39;t think doing this by pid is better. It might suit you currently<br>
but in the long run?<br>
If you are able to send the whole context, why not map that pid to<br>
your context internally instead of relying<br>
on pid which is also visible outside your context.<br>
<span class=""><br>
&gt;<br>
&gt; On Mon, Mar 21, 2016 at 4:01 PM, Nitin Varyani &lt;<a href="mailto:varyani.nitin1@gmail.com">varyani.nitin1@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; I am trying to create a distributed pid space.<br>
&gt;&gt;<br>
&gt;&gt; 0 to 2000 Computer 1<br>
&gt;&gt; 2001 to 4000 Computer 2<br>
&gt;&gt; 4001 to 6000 Computer 3<br>
&gt;&gt;<br>
<br>
</span>your pid 2000 shouldn&#39;t have to be same pid 2000 on another node. You<br>
just need the context right?<br>
<div><div class="h5"><br>
&gt;&gt; and so on...<br>
&gt;&gt;<br>
&gt;&gt; I am running a master user-level process at Computer 1 which sends a<br>
&gt;&gt; process context like code, data, registers, PC, etc as well as &quot;pid&quot; to<br>
&gt;&gt; slave processes running at other computers. The responsibility of the slave<br>
&gt;&gt; process is to fork a new process on order of master process and attach &quot;pid&quot;<br>
&gt;&gt; given by the master to the new process it has forked. Any system call on<br>
&gt;&gt; slave nodes will have an initial check of &quot; Whether the process belongs to<br>
&gt;&gt; local node or to the master node?&quot;. That is, if kernel at Computer 2 pid of<br>
&gt;&gt; the process is 1500<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Mon, Mar 21, 2016 at 12:23 PM, &lt;<a href="mailto:Valdis.Kletnieks@vt.edu">Valdis.Kletnieks@vt.edu</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Mon, 21 Mar 2016 10:33:44 +0530, Nitin Varyani said:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt; Sub-task 1: Until now, parent process cannot control the pid of the<br>
&gt;&gt;&gt; &gt; forked<br>
&gt;&gt;&gt; &gt; child. A pid gets assigned as a sequential number by the kernel at the<br>
&gt;&gt;&gt; &gt; time<br>
&gt;&gt;&gt; &gt; the process is forked . I want to modify kernel in such a way that<br>
&gt;&gt;&gt; &gt; parent<br>
&gt;&gt;&gt; &gt; process can control the pid of the forked child.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; What does controlling the pid gain you?  To what purpose?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt; Sub-task 2: On Linux, you can find the maximum PID value for your<br>
&gt;&gt;&gt; &gt; system<br>
&gt;&gt;&gt; &gt; with the following command:<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; $ cat /proc/sys/kernel/pid_max<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Suppose pid_max=2000 for a system. I want that the parent process<br>
&gt;&gt;&gt; &gt; should be<br>
&gt;&gt;&gt; &gt; able to assign a pid which is greater that 2000 to the forked child.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Again, why would you want to do that?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Anyhow...<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; echo 3000 &gt; /proc/sys/kernel/pid_max<br>
&gt;&gt;&gt; fork a process that gets a pid over 2000.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Done.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Note that on 32 bit systems, using a pid_max of over 32768 will cause<br>
&gt;&gt;&gt; various things in /proc to blow up.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I suspect that you need to think harder about what problem you&#39;re<br>
&gt;&gt;&gt; actually<br>
&gt;&gt;&gt; trying to solve here - what will you do with a controlled child PID? Why<br>
&gt;&gt;&gt; does<br>
&gt;&gt;&gt; it even matter?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
</div></div>&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" rel="noreferrer" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
&gt;<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
--<br>
        ---P.K.S<br>
</font></span></blockquote></div><br></div>