git: pthreads and kernel - change MAP_STACK operation

Matthew Dillon dillon at crater.dragonflybsd.org
Thu May 2 21:39:33 PDT 2019


commit 4837705ef8eed5e115acd4998b8f162b32e6a6f9
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Thu May 2 19:48:53 2019 -0700

    pthreads and kernel - change MAP_STACK operation
    
    * Only allow new mmap()'s to intrude on ungrown MAP_STACK areas when
      MAP_TRYFIXED is specified.  This was not working as intended before.
      Adjust the manual page to be more clear.
    
    * Make kern.maxssiz (the maximum user stack size) visible via sysctl.
    
    * Add kern.maxthrssiz, indicating the approximate space for placement
      of pthread stacks.  This defaults to 128GB.
    
    * The old libthread_xu stack code did use TRYFIXED and will work
      with the kernel changes, but change how it works to not assume
      that the user stack should suddenly be limited to the pthread stack
      size (~2MB).
    
      Just use a normal mmap() now without TRYFIXED and a hint based on
      kern.maxthrssiz (defaults to 512GB), calculating a starting address
      hint that is (_usrstack - maxssiz - maxthrssiz).
    
    * Adjust procfs to report MAP_STACK segments as 'STK'.

Summary of changes:
 lib/libc/sys/mmap.2                      |  20 ++----
 lib/libthread_xu/thread/thr_stack.c      | 114 ++++++++++---------------------
 sys/kern/subr_param.c                    |  11 ++-
 sys/platform/pc64/include/vmparam.h      |   3 +
 sys/platform/vkernel64/include/vmparam.h |   3 +
 sys/vfs/procfs/procfs_map.c              |  13 ++--
 sys/vm/vm_map.c                          |   6 +-
 7 files changed, 68 insertions(+), 102 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/4837705ef8eed5e115acd4998b8f162b32e6a6f9


-- 
DragonFly BSD source repository



More information about the Commits mailing list