summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root>2008-11-16 00:55:41 +0000
committerroot <root>2008-11-16 00:55:41 +0000
commit3c85b2a89c2e609f35fe579ae6058f093a38ce5a (patch)
tree1544445504d70e40459632284eefe23ad37dd93e
parentd5cb59151afca5d4202e69a4d27df78b35f259b4 (diff)
*** empty log message ***
-rw-r--r--coro.c3
-rw-r--r--coro.h5
2 files changed, 7 insertions, 1 deletions
diff --git a/coro.c b/coro.c
index 5c410e8..25dfef8 100644
--- a/coro.c
+++ b/coro.c
@@ -343,6 +343,9 @@ coro_transfer (coro_context *prev, coro_context *next)
{
pthread_cond_signal (&next->cv);
pthread_cond_wait (&prev->cv, &coro_mutex);
+#if __FreeBSD__ /* freebsd is of course broken and needs manual testcancel calls... yay... */
+ pthread_testcancel ();
+#endif
}
void
diff --git a/coro.h b/coro.h
index d16f82b..09f881f 100644
--- a/coro.h
+++ b/coro.h
@@ -66,6 +66,7 @@
* try harder to get _setjmp/_longjmp.
* major code cleanup/restructuring.
* 2008-11-10 the .cfi hacks are no longer needed.
+ * 2008-11-16 work around a freebsd pthread bug.
*/
#ifndef CORO_H
@@ -117,11 +118,13 @@
* -DCORO_ASM
*
* Handcoded assembly, known to work only on a few architectures/ABI:
- * ELF Linux x86 && amd64 when gcc is used and optimisation is turned on.
+ * GCC + x86/IA32 and amd64/x86_64 + GNU/Linux and a few BSDs.
*
* -DCORO_PTHREAD
*
* Use the pthread API. You have to provide <pthread.h> and -lpthread.
+ * This is likely the slowest backend, and it also does not support fork(),
+ * so avoid it at all costs.
*
* If you define neither of these symbols, coro.h will try to autodetect
* the model. This currently works for CORO_LOSER only. For the other