Warning: This file is not a C or C++ file. It does not have highlighting.

1/* Cancelation. Generic version.
2 Copyright (C) 2002-2022 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library 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 GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_CANCELATION_H
20#define _BITS_CANCELATION_H 1
21
22struct __pthread_cancelation_handler
23{
24 void (*__handler) (void *);
25 void *__arg;
26 struct __pthread_cancelation_handler *__next;
27};
28
29/* Returns the thread local location of the cleanup handler stack. */
30struct __pthread_cancelation_handler **__pthread_get_cleanup_stack (void);
31
32#define __pthread_cleanup_push(rt, rtarg) \
33 { \
34 struct __pthread_cancelation_handler **__handlers \
35 = __pthread_get_cleanup_stack (); \
36 struct __pthread_cancelation_handler __handler = \
37 { \
38 (rt), \
39 (rtarg), \
40 *__handlers \
41 }; \
42 *__handlers = &__handler;
43
44#define __pthread_cleanup_pop(execute) \
45 if (execute) \
46 __handler.__handler (__handler.__arg); \
47 *__handlers = __handler.__next; \
48 }
49
50#endif /* _BITS_CANCELATION_H */
51

Warning: This file is not a C or C++ file. It does not have highlighting.

source code of glibc/sysdeps/htl/bits/cancelation.h