Hi List,

The pfind(..) (in kern_proc.c) function below returns the proc structure
for the PID passed in

Say the thread that calls pfind() gets blocked at PROC_LOCK(p) (line 255
below), in the meantime what prevents the process from exiting and
deallocating the proc structure ? Maybe I am missing something simple or
the answer requires knowledge of the mutex implementation.

Thanks,
Nikhil

242 struct proc *
243 pfind(pid)
244         register pid_t pid;
245 {
246         register struct proc *p;
247 
248         sx_slock(&allproc_lock);
249         LIST_FOREACH(p, PIDHASH(pid), p_hash)
250                 if (p->p_pid == pid) {
251                         if (p->p_state == PRS_NEW) {
252                                 p = NULL;
253                                 break;
254                         }
255                         PROC_LOCK(p);
256                         break;
257                 }
258         sx_sunlock(&allproc_lock);
259         return (p);
260 }
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to