All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Buesch <mbuesch@freenet.de>
To: Tim Schmielau <tim@physik3.uni-rostock.de>
Cc: lkml <linux-kernel@vger.kernel.org>
Subject: Re: [RFC] "biological parent" pid
Date: Mon, 31 Jan 2005 23:09:46 +0100	[thread overview]
Message-ID: <200501312309.57464.mbuesch@freenet.de> (raw)
In-Reply-To: <Pine.LNX.4.53.0501311923440.18039@gockel.physik3.uni-rostock.de>

[-- Attachment #1: Type: text/plain, Size: 3348 bytes --]

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 ]



[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

  parent reply	other threads:[~2005-01-31 22:10 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-31 21:38 [RFC] "biological parent" pid Tim Schmielau
2005-01-31 22:04 ` linux-os
2005-01-31 22:09 ` Michael Buesch [this message]
2005-01-31 23:39   ` Tim Schmielau
2005-02-01  9:03     ` Helge Hafting
2005-02-01  8:59       ` Tim Schmielau
2005-02-01  0:07 ` Bernd Eckenfels
2005-02-01  9:07   ` Tim Schmielau
2005-02-01 16:08 ` Bill Davidsen
2005-02-01 18:02   ` Tim Schmielau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200501312309.57464.mbuesch@freenet.de \
    --to=mbuesch@freenet.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tim@physik3.uni-rostock.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.