Applied, thanks! Flavio Cruz, le ven. 16 févr. 2024 13:26:29 -0500, a ecrit: > --- > hurd/process.defs | 6 ++++++ > proc/info.c | 8 ++++++++ > proc/proc.h | 4 +++- > proc/wait.c | 2 ++ > 4 files changed, 19 insertions(+), 1 deletion(-) > > diff --git a/hurd/process.defs b/hurd/process.defs > index 9a8b3a1..007aa2b 100644 > --- a/hurd/process.defs > +++ b/hurd/process.defs > @@ -466,3 +466,9 @@ simpleroutine proc_reauthenticate_reassign ( > that the user has received from auth_user_authenticate call. */ > simpleroutine proc_reauthenticate_complete ( > process: process_t); > + > +/* Returns the rusage information for the children that were waited > + * for plus all their descendants. */ > +routine proc_getchildren_rusage ( > + process: process_t; > + out children_rusage: rusage_t); > diff --git a/proc/info.c b/proc/info.c > index 2d85662..e5b0f47 100644 > --- a/proc/info.c > +++ b/proc/info.c > @@ -1093,3 +1093,11 @@ S_proc_get_exe (struct proc *callerp, > return 0; > } > > +kern_return_t > +S_proc_getchildren_rusage (struct proc *p, struct rusage *ru) > +{ > + if (!p) > + return EOPNOTSUPP; > + *ru = p->p_child_rusage; > + return 0; > +} > diff --git a/proc/proc.h b/proc/proc.h > index a83a509..bbba095 100644 > --- a/proc/proc.h > +++ b/proc/proc.h > @@ -76,7 +76,9 @@ struct proc > int p_sigcode; > struct rusage p_rusage; /* my usage if I'm dead, to return via wait */ > > - struct rusage p_child_rusage; /* accumulates p_rusage of all dead > children */ > + /* Accumulates p_rusage of all dead children, including > + * grandchildren and their descendants. */ > + struct rusage p_child_rusage; > > unsigned int p_exec:1; /* has called proc_mark_exec */ > unsigned int p_stopped:1; /* has called proc_mark_stop */ > diff --git a/proc/wait.c b/proc/wait.c > index 4551d28..a31b0e7 100644 > --- a/proc/wait.c > +++ b/proc/wait.c > @@ -156,6 +156,8 @@ alert_parent (struct proc *p) > { > /* We accumulate the aggregate usage stats of all our dead children. */ > rusage_add (&p->p_parent->p_child_rusage, &p->p_rusage); > + /* ... and descendants. */ > + rusage_add (&p->p_parent->p_child_rusage, &p->p_child_rusage); > > send_signal (p->p_parent->p_msgport, SIGCHLD, CLD_EXITED, > p->p_parent->p_task); > > -- > 2.39.2 > >
-- Samuel --- Pour une évaluation indépendante, transparente et rigoureuse ! Je soutiens la Commission d'Évaluation de l'Inria.