scalls.c (1219:f89f56c2d9ac) scalls.c (1885:7bbaa5935f99)
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.

--- 355 unchanged lines hidden (view full) ---

371 } \
372 if (self->ul_sigsuspend) { \
373 self->ul_sigsuspend = 0; \
374 restore_signals(self); \
375 } \
376}
377
378/*
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.

--- 355 unchanged lines hidden (view full) ---

370 } \
371 if (self->ul_sigsuspend) { \
372 self->ul_sigsuspend = 0; \
373 restore_signals(self); \
374 } \
375}
376
377/*
378 * Externally-callable cancellation prologue and epilogue
379 * functions, for cancellation points outside of libc.
380 */
381void
382_cancel_prologue(void)
383{
384 ulwp_t *self = curthread;
385
386 self->ul_cancel_prologue = (self->ul_vfork | self->ul_nocancel);
387 if (self->ul_cancel_prologue == 0) {
388 self->ul_save_async = self->ul_cancel_async;
389 if (!self->ul_cancel_disabled) {
390 self->ul_cancel_async = 1;
391 if (self->ul_cancel_pending)
392 _pthread_exit(PTHREAD_CANCELED);
393 }
394 self->ul_sp = stkptr();
395 }
396}
397
398void
399_cancel_epilogue(void)
400{
401 ulwp_t *self = curthread;
402
403 if (self->ul_cancel_prologue == 0) {
404 self->ul_sp = 0;
405 self->ul_cancel_async = self->ul_save_async;
406 }
407}
408
409/*
379 * Called from _thrp_join() (thr_join() is a cancellation point)
380 */
381int
382lwp_wait(thread_t tid, thread_t *found)
383{
384 int error;
385
386 PROLOGUE

--- 529 unchanged lines hidden ---
410 * Called from _thrp_join() (thr_join() is a cancellation point)
411 */
412int
413lwp_wait(thread_t tid, thread_t *found)
414{
415 int error;
416
417 PROLOGUE

--- 529 unchanged lines hidden ---