]>
Commit | Line | Data |
---|---|---|
8619129f UD |
1 | /* Linuxthreads - a simple clone()-based implementation of Posix */ |
2 | /* threads for Linux. */ | |
3 | /* Copyright (C) 1998 Xavier Leroy (Xavier.Leroy@inria.fr) */ | |
4 | /* */ | |
5 | /* This program is free software; you can redistribute it and/or */ | |
6 | /* modify it under the terms of the GNU Library General Public License */ | |
7 | /* as published by the Free Software Foundation; either version 2 */ | |
8 | /* of the License, or (at your option) any later version. */ | |
9 | /* */ | |
10 | /* This program is distributed in the hope that it will be useful, */ | |
11 | /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ | |
12 | /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ | |
13 | /* GNU Library General Public License for more details. */ | |
14 | ||
15 | /* Redefine siglongjmp and longjmp so that they interact correctly | |
16 | with cleanup handlers */ | |
17 | ||
18 | #include <setjmp.h> | |
19 | #include "pthread.h" | |
20 | #include "internals.h" | |
21 | ||
f12944ec UD |
22 | /* These functions are not declared anywhere since they shouldn't be |
23 | used at another place but here. */ | |
24 | extern void __libc_siglongjmp (sigjmp_buf env, int val) | |
25 | __attribute__ ((noreturn)); | |
26 | extern void __libc_longjmp (sigjmp_buf env, int val) | |
27 | __attribute__ ((noreturn)); | |
28 | ||
bf293afe | 29 | #ifdef SHARED |
416d2de6 | 30 | void siglongjmp (sigjmp_buf env, int val) |
8619129f | 31 | { |
416d2de6 | 32 | __libc_siglongjmp (env, val); |
8619129f UD |
33 | } |
34 | ||
416d2de6 | 35 | void longjmp (jmp_buf env, int val) |
8619129f | 36 | { |
416d2de6 | 37 | __libc_longjmp (env, val); |
8619129f | 38 | } |
bf293afe | 39 | #endif |