Messages in this thread | | | Subject | Re: [PATCH v3] do_wait: make PIDTYPE_PID case O(1) instead of O(n) | From | Jim Newsome <> | Date | Wed, 10 Mar 2021 18:14:44 -0600 |
| |
On 3/10/21 16:40, Eric W. Biederman wrote: >> +// Optimization for waiting on PIDTYPE_PID. No need to iterate through child >> +// and tracee lists to find the target task. > > Minor nit: C++ style comments look very out of place in this file > which uses old school C /* */ comment delimiters for > all of it's block comments.
Will do
>> +static int do_wait_pid(struct wait_opts *wo) >> +{ >> + struct task_struct *target = pid_task(wo->wo_pid, PIDTYPE_PID); > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > This is subtle change in behavior. > > Today on the task->children list we only place thread group leaders.
Shouldn't we allow waiting on clone children if __WALL or __WCLONE is set?
This is already checked later in `eligible_child`, called from `wait_consider_task`, so I *think* the current form should already do the right thing. Now I'm confused though how the general path (through `do_wait_thread`) works if clone children aren't on the task->children list...?
(In any case it seems this will need another version with at least an explanatory comment here)
Thanks! -Jim
| |