| 146 | } |
| 147 | |
| 148 | static void |
| 149 | reaper_clear(struct proc *p) |
| 150 | { |
| 151 | struct proc *p1; |
| 152 | bool clear; |
| 153 | |
| 154 | sx_assert(&proctree_lock, SX_LOCKED); |
| 155 | LIST_REMOVE(p, p_reapsibling); |
| 156 | if (p->p_reapsubtree == 1) |
| 157 | return; |
| 158 | clear = true; |
| 159 | LIST_FOREACH(p1, &p->p_reaper->p_reaplist, p_reapsibling) { |
| 160 | if (p1->p_reapsubtree == p->p_reapsubtree) { |
| 161 | clear = false; |
| 162 | break; |
| 163 | } |
| 164 | } |
| 165 | if (clear) |
| 166 | proc_id_clear(PROC_ID_REAP, p->p_reapsubtree); |
| 167 | } |
| 168 | |
| 169 | void |
| 170 | proc_clear_orphan(struct proc *p) |
no test coverage detected