* Move p to an existing process group */
| 629 | * Move p to an existing process group |
| 630 | */ |
| 631 | int |
| 632 | enterthispgrp(struct proc *p, struct pgrp *pgrp) |
| 633 | { |
| 634 | |
| 635 | sx_assert(&proctree_lock, SX_XLOCKED); |
| 636 | PROC_LOCK_ASSERT(p, MA_NOTOWNED); |
| 637 | PGRP_LOCK_ASSERT(pgrp, MA_NOTOWNED); |
| 638 | PGRP_LOCK_ASSERT(p->p_pgrp, MA_NOTOWNED); |
| 639 | SESS_LOCK_ASSERT(p->p_session, MA_NOTOWNED); |
| 640 | KASSERT(pgrp->pg_session == p->p_session, |
| 641 | ("%s: pgrp's session %p, p->p_session %p proc %p\n", |
| 642 | __func__, pgrp->pg_session, p->p_session, p)); |
| 643 | KASSERT(pgrp != p->p_pgrp, |
| 644 | ("%s: p %p belongs to pgrp %p", __func__, p, pgrp)); |
| 645 | |
| 646 | doenterpgrp(p, pgrp); |
| 647 | |
| 648 | return (0); |
| 649 | } |
| 650 | |
| 651 | /* |
| 652 | * If true, any child of q which belongs to group pgrp, qualifies the |
no test coverage detected