version 1.202.2.1, 2005/10/21 17:39:40 |
version 1.202.2.2, 2005/11/13 13:55:27 |
Line 1155 kpsignal2(struct proc *p, const ksiginfo |
|
Line 1155 kpsignal2(struct proc *p, const ksiginfo |
|
if (l->l_stat == LSSLEEP && |
if (l->l_stat == LSSLEEP && |
l->l_flag & L_SINTR) { |
l->l_flag & L_SINTR) { |
/* ok to signal vp lwp */ |
/* ok to signal vp lwp */ |
|
break; |
} else |
} else |
l = NULL; |
l = NULL; |
} |
} |
if (l == NULL) |
|
allsusp = 1; |
|
} else if (p->p_stat == SSTOP) { |
} else if (p->p_stat == SSTOP) { |
SLIST_FOREACH(vp, &p->p_sa->sa_vps, savp_next) { |
SLIST_FOREACH(vp, &p->p_sa->sa_vps, savp_next) { |
l = vp->savp_lwp; |
l = vp->savp_lwp; |
Line 1249 kpsignal2(struct proc *p, const ksiginfo |
|
Line 1248 kpsignal2(struct proc *p, const ksiginfo |
|
* them. |
* them. |
*/ |
*/ |
if (allsusp && (signum == SIGKILL)) { |
if (allsusp && (signum == SIGKILL)) { |
if (p->p_flag & P_SA) { |
|
/* |
|
* get a suspended lwp from |
|
* the cache to send KILL |
|
* signal |
|
* XXXcl add signal checks at resume points |
|
*/ |
|
suspended = sa_getcachelwp |
|
(SLIST_FIRST(&p->p_sa->sa_vps)); |
|
} |
|
lwp_continue(suspended); |
lwp_continue(suspended); |
} |
} |
goto done; |
goto done; |