summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libpthread/linuxthreads.old/manager.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libpthread/linuxthreads.old/manager.c b/libpthread/linuxthreads.old/manager.c
index 204344aef..7ad5ab525 100644
--- a/libpthread/linuxthreads.old/manager.c
+++ b/libpthread/linuxthreads.old/manager.c
@@ -498,6 +498,14 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
&new_thread, &new_thread_bottom,
&guardaddr, &guardsize) == 0)
break;
+#ifndef __ARCH_HAS_MMU__
+ else
+ /* When there is MMU, mmap () is used to allocate the stack. If one
+ * segment is already mapped, we should continue to see if we can
+ * use the next one. However, when there is no MMU, malloc () is used.
+ * It's waste of CPU cycles to continue to try if it fails. */
+ return EAGAIN;
+#endif
}
__pthread_handles_num++;
/* Allocate new thread identifier */