Skip to content
  • Jeremy Fitzhardinge's avatar
    x86: allow extend_brk users to reserve brk space · 796216a5
    Jeremy Fitzhardinge authored
    
    
    Impact: new interface; remove hard-coded limit
    
    Add RESERVE_BRK(name, size) macro to reserve space in the brk
    area.  This should be a conservative (ie, larger) estimate of
    how much space might possibly be required from the brk area.
    Any unused space will be freed, so there's no real downside
    on making the reservation too large (within limits).
    
    The name should be unique within a given file, and somewhat
    descriptive.
    
    The C definition of RESERVE_BRK() ends up being more complex than
    one would expect to work around a cluster of gcc infelicities:
    
      The first attempt was to simply try putting __section(.brk_reservation)
      on a variable.  This doesn't work because it ends up making it a
      @progbits section, which gets actual space allocated in the vmlinux
      executable.
    
      The second attempt was to emit the space into a section using asm,
      but gcc doesn't allow arguments to be passed to file-level asm()
      statements, making it hard to pass in the size.
    
      The final attempt is to wrap the asm() in a function to allow
      it to have arguments, and put the function itself into the
      .discard section, which vmlinux*.lds drops entirely from the
      emitted vmlinux.
    
    Signed-off-by: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
    796216a5