aboutsummaryrefslogtreecommitdiff
path: root/linuxthreads/sysdeps/pthread
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads/sysdeps/pthread')
-rw-r--r--linuxthreads/sysdeps/pthread/bits/libc-lock.h14
-rw-r--r--linuxthreads/sysdeps/pthread/pthread-functions.h5
2 files changed, 9 insertions, 10 deletions
diff --git a/linuxthreads/sysdeps/pthread/bits/libc-lock.h b/linuxthreads/sysdeps/pthread/bits/libc-lock.h
index c0d0debe14..7e22166862 100644
--- a/linuxthreads/sysdeps/pthread/bits/libc-lock.h
+++ b/linuxthreads/sysdeps/pthread/bits/libc-lock.h
@@ -265,18 +265,12 @@ typedef pthread_key_t __libc_key_t;
}
#define __libc_cleanup_push(fct, arg) \
- { struct _pthread_cleanup_buffer _buffer; \
- int _avail = _pthread_cleanup_push != NULL; \
- if (_avail) { \
- _pthread_cleanup_push (&_buffer, (fct), (arg)); \
- }
+ { struct _pthread_cleanup_buffer _buffer; \
+ __libc_maybe_call (_pthread_cleanup_push, (&_buffer, (fct), (arg)), 0)
#define __libc_cleanup_pop(execute) \
- if (_avail) { \
- _pthread_cleanup_pop (&_buffer, execute); \
- } \
- }
-
+ __libc_maybe_call (_pthread_cleanup_pop, (&_buffer, execute), 0); \
+ }
/* Create thread-specific key. */
#define __libc_key_create(KEY, DESTRUCTOR) \
diff --git a/linuxthreads/sysdeps/pthread/pthread-functions.h b/linuxthreads/sysdeps/pthread/pthread-functions.h
index deade5c981..43a328ae9c 100644
--- a/linuxthreads/sysdeps/pthread/pthread-functions.h
+++ b/linuxthreads/sysdeps/pthread/pthread-functions.h
@@ -83,6 +83,11 @@ struct pthread_functions
int (*ptr_pthread_raise) (int sig);
int (*ptr___pthread_cond_timedwait) (pthread_cond_t *, pthread_mutex_t *,
const struct timespec *);
+ void (*ptr__pthread_cleanup_push) (struct _pthread_cleanup_buffer * buffer,
+ void (*routine)(void *), void * arg);
+
+ void (*ptr__pthread_cleanup_pop) (struct _pthread_cleanup_buffer * buffer,
+ int execute);
};
/* Variable in libc.so. */