f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * CDDL HEADER START
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * The contents of this file are subject to the terms of the
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * Common Development and Distribution License (the "License").
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * You may not use this file except in compliance with the License.
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * See the License for the specific language governing permissions
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * and limitations under the License.
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * When distributing Covered Code, include this CDDL HEADER in each
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * If applicable, add the following below this CDDL HEADER, with the
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * fields enclosed by brackets "[]" replaced with your own identifying
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * information: Portions Copyright [yyyy] [name of copyright owner]
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * CDDL HEADER END
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * Use is subject to license terms.
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowerscopyout_siginfo(model_t datamodel, k_siginfo_t *ksip, void *uaddr)
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers if (SI_FROMUSER(ksip) && zoneid != GLOBAL_ZONEID &&
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers sani_sip.si_pid = curproc->p_zone->zone_zsched->p_pid;
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers if (SI_FROMUSER(ksip) && zoneid != GLOBAL_ZONEID &&
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * Wait until a signal within a specified set is posted or until the
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * time interval 'timeout' if specified. The signal is caught but
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * not delivered. The value of the signal is returned to the caller.
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowerssigtimedwait(sigset_t *setp, siginfo_t *siginfop, timespec_t *timeoutp)
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers if (copyin(timeoutp, &timeout32, sizeof (timeout32)))
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * Convert the timespec value into absolute time.
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * set the thread's signal mask to unmask
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * those signals in the specified set.
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * Wait until we take a signal or until
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * the absolute future time is passed.
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers while ((ret = cv_waituntil_sig(&t->t_delay_cv, &p->p_lock,
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * Restore thread's signal mask to its previous value.
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers t->t_sig_check = 1; /* so post_syscall sees new t_hold mask */
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * Don't bother with signal if it is not in request set.
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * lwp_cursig is zero if pokelwps() awakened cv_wait_sig().
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * This happens if some other thread in this process called
f9fbec18f5b458b560ecf45d3db8e8bd56bf6942mcpowers * forkall() or exit().