diff options
| author | Samuel Thibault <samy@hurd.youpi.perso.aquilenet.fr> | 2012-05-20 13:37:32 +0000 |
|---|---|---|
| committer | Samuel Thibault <samy@hurd.youpi.perso.aquilenet.fr> | 2012-05-20 13:37:32 +0000 |
| commit | ca35f7a6e428a95d1ff0aa40d6545820b580df1d (patch) | |
| tree | 27027c7aabca1f4bbe7fb684e4f0f1a7d3b24051 /libpthread/signal/sigaltstack.c | |
| parent | c490cb9d4c1df1adcb2e76679e1969e7fe062560 (diff) | |
| parent | 756a64304b61a94b9b57ae88c4af5654152f5b8e (diff) | |
Merge branch 'upstream-merged'
Diffstat (limited to 'libpthread/signal/sigaltstack.c')
| -rw-r--r-- | libpthread/signal/sigaltstack.c | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/libpthread/signal/sigaltstack.c b/libpthread/signal/sigaltstack.c deleted file mode 100644 index 8334811a..00000000 --- a/libpthread/signal/sigaltstack.c +++ /dev/null @@ -1,69 +0,0 @@ -/* sigaltstack.c - Generic sigaltstack implementation. - Copyright (C) 2008 Free Software Foundation, Inc. - Written by Neal H. Walfield <neal@gnu.org>. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation; either version 3 of - the License, or (at your option) any later version. - - The GNU Hurd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program. If not, see - <http://www.gnu.org/licenses/>. */ - -#include "sig-internal.h" -#include "pt-internal.h" - -int -sigaltstack (const stack_t *restrict stack, stack_t *restrict old) -{ - int err = 0; - struct signal_state *ss = &_pthread_self ()->ss; - - pthread_mutex_lock (&ss->lock); - - if (old) - *old = ss->stack; - - if (stack) - { - if (stack->ss_size < MINSIGSTKSZ) - { - err = ENOMEM; - goto out; - } - - if ((stack->ss_flags & ~(SS_DISABLE))) - /* Flags contains a value other than SS_DISABLE. */ - { - err = EINVAL; - goto out; - } - - if ((ss->stack.ss_flags & SS_ONSTACK)) - /* Stack in use. */ - { - err = EPERM; - goto out; - } - - ss->stack = *stack; - } - - out: - pthread_mutex_unlock (&ss->lock); - - if (err) - { - errno = err; - return -1; - } - return 0; -} |
