Re: [RFC] "biological parent" pid

From: Michael Buesch (mbuesch_at_freenet.de)
Date: 01/31/05

  • Next message: Bill Davidsen: "Re: 2.6.11-rc2 TCP ignores PMTU ICMP (Re: Linux 2.6.11-rc2)"
    To: Tim Schmielau <tim@physik3.uni-rostock.de>
    Date:	Mon, 31 Jan 2005 23:09:46 +0100
    
    
    

    Quoting Tim Schmielau <tim@physik3.uni-rostock.de>:
    > The ppid of a process is not really helpful if I want to reconstruct the
    > real history of processes on a machine, since it may become 1 when the
    > parent dies and the process is reparented to init.
    >
    > I am not aware of concepts in Linux or other unices that apply to this
    > case. So I made up the "biological parent pid" bioppid (in contrast to the
    > adoptive parents pid) that just never changes.
    > Any user of it must of course remember that it doesn't need to be a valid
    > pid anymore or might even belong to a different process that was forked in
    > the meantime. bioppid only had to be a valid pid at time btime (it's
    > a (btime, pid) pair that unambiguously identifies a process).
    >
    > Comments? (other that I just broke /proc/nnn/status parsing once again :-)

    Eh, I can't see how this bioppid would be useful.
    Help me. Examples?

    > Tim
    >
    >
    > --- linux-2.6.10/include/linux/sched.h 2004-12-24 22:33:59.000000000 +0100
    > +++ linux-2.6.10-ppid/include/linux/sched.h 2005-01-31 19:20:00.000000000 +0100
    > @@ -556,6 +556,7 @@ struct task_struct {
    > unsigned did_exec:1;
    > pid_t pid;
    > pid_t tgid;
    > + pid_t bioppid; /* biological parents */
    > /*
    > * pointers to (original) parent process, youngest child, younger sibling,
    > * older sibling, respectively. (p->father can be replaced with
    >
    > --- linux-2.6.10/kernel/fork.c 2004-12-24 22:33:59.000000000 +0100
    > +++ linux-2.6.10-ppid/kernel/fork.c 2005-01-31 18:15:39.000000000 +0100
    > @@ -889,6 +889,7 @@ static task_t *copy_process(unsigned lon
    > p->tgid = p->pid;
    > if (clone_flags & CLONE_THREAD)
    > p->tgid = current->tgid;
    > + p->bioppid = current->pid;
    >
    > if ((retval = security_task_alloc(p)))
    > goto bad_fork_cleanup_policy;
    >
    > --- linux-2.6.10/fs/proc/array.c 2004-12-24 22:35:00.000000000 +0100
    > +++ linux-2.6.10-ppid/fs/proc/array.c 2005-01-31 18:19:02.000000000 +0100
    > @@ -165,6 +165,7 @@ static inline char * task_state(struct t
    > "Tgid:\t%d\n"
    > "Pid:\t%d\n"
    > "PPid:\t%d\n"
    > + "BioPPid:\t%d\n"
    > "TracerPid:\t%d\n"
    > "Uid:\t%d\t%d\t%d\t%d\n"
    > "Gid:\t%d\t%d\t%d\t%d\n",
    > @@ -172,6 +173,7 @@ static inline char * task_state(struct t
    > (p->sleep_avg/1024)*100/(1020000000/1024),
    > p->tgid,
    > p->pid, pid_alive(p) ? p->group_leader->real_parent->tgid : 0,
    > + p->bioppid,
    > pid_alive(p) && p->ptrace ? p->parent->pid : 0,
    > p->uid, p->euid, p->suid, p->fsuid,
    > p->gid, p->egid, p->sgid, p->fsgid);
    >
    > --- linux-2.6.10/kernel/acct.c 2004-12-24 22:34:58.000000000 +0100
    > +++ linux-2.6.10-ppid/kernel/acct.c 2005-01-31 18:19:35.000000000 +0100
    > @@ -446,7 +446,7 @@ static void do_acct_process(long exitcod
    > #endif
    > #if ACCT_VERSION==3
    > ac.ac_pid = current->tgid;
    > - ac.ac_ppid = current->parent->tgid;
    > + ac.ac_ppid = current->bioppid;
    > #endif
    >
    > read_lock(&tasklist_lock); /* pin current->signal */
    > -
    > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    > the body of a message to majordomo@vger.kernel.org
    > More majordomo info at http://vger.kernel.org/majordomo-info.html
    > Please read the FAQ at http://www.tux.org/lkml/
    >
    >

    -- 
    Regards Michael Buesch  [ http://www.tuxsoft.de.vu ]
    
    

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/



  • Next message: Bill Davidsen: "Re: 2.6.11-rc2 TCP ignores PMTU ICMP (Re: Linux 2.6.11-rc2)"

    Relevant Pages

    • Kernel BUG at rmap:482
      ... unfortunately I am experiencing the same problem myself now on a new ... I can reproduce the problem fairly regularly, ... Process sh (pid: 16405, threadinfo ffff810035fa2000, task ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • Re: [patch] generic-hardirqs-2.6.9-rc1-mm4.patch
      ... I've got this trace: ... Process kjournald (pid: 694, threadinfo 000001001f588000, task ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • Re: cfq misbehaving on 2.6.11-1.14_FC3
      ... the computing and locking cost for every single page write ... > a pid as index, then it'd need to go in the page_t, which would waste ... send the line "unsubscribe linux-kernel" in ... More majordomo info at http://vger.kernel.org/majordomo-info.html ...
      (Linux-Kernel)
    • Re: [patch] inotify, improved.
      ... telling which pid ... we can make the argument that read rights on a ... say that read rights are enough for a unprivileged user to know that ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • Re: anon unions are cool
      ... _is_ common to add an accessor method due to upcoming locking/ virtualization changes or similar. ... union {pid_t pid __deprecated; ... Code that used task->pid would get a deprecation warning, however new code that used the task_pidwould work fine; and the task_pidfunction itself would generate no warnings. ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)