From b42a214c1807dc596cf3647fc35a0eb42ccc7e68 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 24 Aug 2009 16:23:47 -0700 Subject: Hint to kernel that thread stack memory can be removed. --- nptl/pthread_create.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'nptl/pthread_create.c') diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c index c693979..89938b3 100644 --- a/nptl/pthread_create.c +++ b/nptl/pthread_create.c @@ -377,6 +377,19 @@ start_thread (void *arg) } #endif + /* Mark the memory of the stack as usable to the kernel. We free + everything except for the space used for the TCB itself. */ + size_t pagesize_m1 = __getpagesize () - 1; +#ifdef _STACK_GROWS_DOWN + char *sp = CURRENT_STACK_FRAME; + size_t freesize = (sp - (char *) pd->stackblock) & ~pagesize_m1; +#else +# error "to do" +#endif + assert (freesize < pd->stackblock_size); + if (freesize > PTHREAD_STACK_MIN) + madvise (pd->stackblock, freesize - PTHREAD_STACK_MIN, MADV_DONTNEED); + /* If the thread is detached free the TCB. */ if (IS_DETACHED (pd)) /* Free the TCB. */ -- cgit v1.1