Thread (2 messages) 2 messages, 2 authors, 2016-03-22

Attach my own pid

From: Pranay Srivastava <hidden>
Date: 2016-03-22 03:22:19

On Mon, Mar 21, 2016 at 4:34 PM, Nitin Varyani [off-list ref] wrote:
struct task_struct {
volatile long state;
void *stack;
...
pid_t pid;
...
}
You mean to say that just mapping the pid_t pid  will do the job. Does the
linux kernel not store pid somewhere else while forking a child?
No I mean you can translate the pid chosen by kernel and then have a
policy to map it within your framework. That just translates onto a
possible different pid or may be same on another node. That way your
framework goes independent of what the kernel is doing.

Like for example nfs, translates the inode to a file handle internally
but that framework is independent of what happens on both nodes.
On Mon, Mar 21, 2016 at 4:18 PM, Pranay Srivastava [off-list ref]
wrote:
quoted
Nitin,


On Mon, Mar 21, 2016 at 4:03 PM, Nitin Varyani [off-list ref]
wrote:
quoted
.....Continued.... That is, if kernel at Computer 2 finds that pid of a
process requesting a system call is 1500, the request is forwarded to
slave
daemon which in turn contacts with the master daemon. Master daemon
requests
the kernel for the system call and sends the result back to slave
daemon.
I don't think doing this by pid is better. It might suit you currently
but in the long run?
If you are able to send the whole context, why not map that pid to
your context internally instead of relying
on pid which is also visible outside your context.
quoted
On Mon, Mar 21, 2016 at 4:01 PM, Nitin Varyani
[off-list ref]
wrote:
quoted
I am trying to create a distributed pid space.

0 to 2000 Computer 1
2001 to 4000 Computer 2
4001 to 6000 Computer 3
your pid 2000 shouldn't have to be same pid 2000 on another node. You
just need the context right?
quoted
quoted
and so on...

I am running a master user-level process at Computer 1 which sends a
process context like code, data, registers, PC, etc as well as "pid" to
slave processes running at other computers. The responsibility of the
slave
process is to fork a new process on order of master process and attach
"pid"
given by the master to the new process it has forked. Any system call
on
slave nodes will have an initial check of " Whether the process belongs
to
local node or to the master node?". That is, if kernel at Computer 2
pid of
the process is 1500



On Mon, Mar 21, 2016 at 12:23 PM, [off-list ref] wrote:
quoted
On Mon, 21 Mar 2016 10:33:44 +0530, Nitin Varyani said:
quoted
Sub-task 1: Until now, parent process cannot control the pid of the
forked
child. A pid gets assigned as a sequential number by the kernel at
the
time
the process is forked . I want to modify kernel in such a way that
parent
process can control the pid of the forked child.
What does controlling the pid gain you?  To what purpose?
quoted
Sub-task 2: On Linux, you can find the maximum PID value for your
system
with the following command:

$ cat /proc/sys/kernel/pid_max

Suppose pid_max=2000 for a system. I want that the parent process
should be
able to assign a pid which is greater that 2000 to the forked child.
Again, why would you want to do that?

Anyhow...

echo 3000 > /proc/sys/kernel/pid_max
fork a process that gets a pid over 2000.

Done.

Note that on 32 bit systems, using a pid_max of over 32768 will cause
various things in /proc to blow up.

I suspect that you need to think harder about what problem you're
actually
trying to solve here - what will you do with a controlled child PID?
Why
does
it even matter?

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


--
        ---P.K.S


-- 
        ---P.K.S
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help