/* * pi_drop: remove a pidinfo structure from the process table and free * it. It should reflect a process that has already exited and been * waited for. */ static void pi_drop(pid_t pid) { struct pidinfo *pi; KASSERT(lock_do_i_hold(pidlock)); pi = pidinfo[pid % PROCS_MAX]; KASSERT(pi != NULL); KASSERT(pi->pi_pid == pid); pidinfo_destroy(pi); pidinfo[pid % PROCS_MAX] = NULL; nprocs--; }
/* * pi_drop: remove a pidinfo structure from the process table and free * it. It should reflect a process that has already exited and been * waited for. */ static void pi_drop(pid_t pid) { struct pidinfo *pi; KASSERT(lock_do_i_hold(pidlock)); pi = pidinfo[pid % PROCS_MAX]; KASSERT(pi != NULL); KASSERT(pi->pi_pid == pid); pidinfo_destroy(pi); pidinfo[pid % PROCS_MAX] = NULL; nprocs--; DEBUG(DB_THREADS, "Dropped pidinfo for %d\n", pid); }