about summary refs log tree commit diff
path: root/src/thread
diff options
context:
space:
mode:
Diffstat (limited to 'src/thread')
-rw-r--r--src/thread/cancellation.c7
-rw-r--r--src/thread/cancellation2.c0
-rw-r--r--src/thread/cancellation3.c0
-rw-r--r--src/thread/i386/cancellation2.s16
-rw-r--r--src/thread/i386/cancellation3.s8
-rw-r--r--src/thread/pthread_create.c5
6 files changed, 36 insertions, 0 deletions
diff --git a/src/thread/cancellation.c b/src/thread/cancellation.c
index ac1af30a..4976fedc 100644
--- a/src/thread/cancellation.c
+++ b/src/thread/cancellation.c
@@ -1,5 +1,12 @@
 #include "pthread_impl.h"
 
+#ifdef __pthread_register_cancel
+#undef __pthread_register_cancel
+#undef __pthread_unregister_cancel
+#define __pthread_register_cancel __pthread_register_cancel_3
+#define __pthread_unregister_cancel __pthread_unregister_cancel_3
+#endif
+
 void __pthread_register_cancel(struct __ptcb *cb)
 {
 	struct pthread *self = pthread_self();
diff --git a/src/thread/cancellation2.c b/src/thread/cancellation2.c
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/thread/cancellation2.c
diff --git a/src/thread/cancellation3.c b/src/thread/cancellation3.c
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/thread/cancellation3.c
diff --git a/src/thread/i386/cancellation2.s b/src/thread/i386/cancellation2.s
new file mode 100644
index 00000000..859aa239
--- /dev/null
+++ b/src/thread/i386/cancellation2.s
@@ -0,0 +1,16 @@
+.text
+.global __pthread_register_cancel
+.type   __pthread_register_cancel,%function
+__pthread_register_cancel:
+	pushl %eax
+	call __pthread_register_cancel_3
+	popl %eax
+	ret
+
+.global __pthread_unregister_cancel
+.type   __pthread_unregister_cancel,%function
+__pthread_unregister_cancel:
+	pushl %eax
+	call __pthread_unregister_cancel_3
+	popl %eax
+	ret
diff --git a/src/thread/i386/cancellation3.s b/src/thread/i386/cancellation3.s
new file mode 100644
index 00000000..210293e2
--- /dev/null
+++ b/src/thread/i386/cancellation3.s
@@ -0,0 +1,8 @@
+.text
+.global __pthread_unwind_next
+.type   __pthread_unwind_next,%function
+__pthread_unwind_next:
+	pushl %eax
+	call __pthread_unwind_next_3
+	popl %eax
+	ret
diff --git a/src/thread/pthread_create.c b/src/thread/pthread_create.c
index 785a82b8..9f22b4cf 100644
--- a/src/thread/pthread_create.c
+++ b/src/thread/pthread_create.c
@@ -1,5 +1,10 @@
 #include "pthread_impl.h"
 
+#ifdef __pthread_unwind_next
+#undef __pthread_unwind_next
+#define __pthread_unwind_next __pthread_unwind_next_3
+#endif
+
 void __pthread_unwind_next(struct __ptcb *cb)
 {
 	int i, j, not_finished;