[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 2/3] qemu-thread: add cleanup_push() and cleanup_pop
From: |
Corentin Chary |
Subject: |
[Qemu-devel] [PATCH 2/3] qemu-thread: add cleanup_push() and cleanup_pop() |
Date: |
Sat, 29 May 2010 09:38:05 +0200 |
>From pthread man:
These functions manipulate the calling thread's stack of
thread-cancellation clean-up handlers. A clean-up handler is
a function that is automatically executed when a thread is canceled
[...] it might, for example, unlock a mutex so that it becomes
available to other threads in the process.
These two functions are implemented using macros because there is no
other way to do that (pthread man, again):
On Linux, the pthread_cleanup_push() and pthread_cleanup_pop()
functions are implemented as macros that expand to text containing
'{' and '}', respectively. This means that variables declared
within the scope of paired calls to these functions will only
be visible within that scope.
Signed-off-by: Corentin Chary <address@hidden>
---
qemu-thread.h | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/qemu-thread.h b/qemu-thread.h
index 19bb30c..e5006bb 100644
--- a/qemu-thread.h
+++ b/qemu-thread.h
@@ -41,4 +41,8 @@ void qemu_thread_self(QemuThread *thread);
int qemu_thread_equal(QemuThread *thread1, QemuThread *thread2);
void qemu_thread_exit(void *retval);
+#define qemu_thread_cleanup_pop(execute) pthread_cleanup_pop(execute)
+#define qemu_thread_cleanup_push(routine, arg) \
+ pthread_cleanup_push(routine, arg)
+
#endif
--
1.7.1