• Monty's avatar
    Added support to MEM_ROOT for write protected memory · b1d81974
    Monty authored
    This is useful for thing like Item_true and Item_false that we
    allocated and initalize once and want to ensure that nothing can
    change them
    
    Main changes:
    - Memory protection is achived by allocating memory with mmap() and
      protect it from write with mprotect()
    - init_alloc_root(...,MY_ROOT_USE_MPROTECT) will create a
      memroot that one can later use with protect_root() to turn it
      read only or turn it back to read-write. All allocations to this
      memroot is done with mmap() to ensure page alligned allocations.
    - alloc_root() code was rearranged to combine normal and valgrind code.
    - init_alloc_root() now changes block size to be power of 2's, to get less
      memory fragmentation.
    - Changed MEM_ROOT structure to make it smaller. Also renamed
      MEM_ROOT m_psi_key to psi_key.
    - Moved MY_THREAD_SPECIFIC marker in MEM_ROOT from block size (old hack)
      to flags.
    - Added global variable my_system_page_size. This is initialized at
      startup.
    b1d81974
config.h.cmake 16.4 KB