Interface ExtentAllocI

  • All Superinterfaces:
    CallbackI, CallbackI.P, Pointer
    All Known Implementing Classes:
    Functional Interface:
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

    public interface ExtentAllocI
    extends CallbackI.P
    Instances of this interface may be set to the ExtentHooks struct.


     void * (*) (
         extent_hooks_t *extent_hooks,
         void *new_addr,
         size_t size,
         size_t alignment,
         bool *zero,
         bool *commit,
         unsigned int arena_ind
    • Method Detail

      • getSignature

        default java.lang.String getSignature()
        Description copied from interface: CallbackI
        Returns the dyncall signature for this callback function. [INTERNAL API]
        Specified by:
        getSignature in interface CallbackI
        the dyncall signature
      • callback

        default long callback​(long args)
        Description copied from interface: CallbackI.P
        Will be called by native code.
        Specified by:
        callback in interface CallbackI.P
        args - pointer to a DCArgs iterator
        the value to store to the result DCValue
      • invoke

        long invoke​(long extent_hooks,
                    long new_addr,
                    long size,
                    long alignment,
                    long zero,
                    long commit,
                    int arena_ind)
        Extent allocation hook.

        An extent allocation function conforms to the extent_alloc_t type and upon success returns a pointer to size bytes of mapped memory on behalf of arena arena_ind such that the extent's base address is a multiple of alignment, as well as setting *zero to indicate whether the extent is zeroed and *commit to indicate whether the extent is committed. Upon error the function returns NULL and leaves *zero and *commit unmodified. The size parameter is always a multiple of the page size. The alignment parameter is always a power of two at least as large as the page size. Zeroing is mandatory if *zero is true upon function entry. Committing is mandatory if *commit is true upon function entry. If new_addr is not NULL, the returned pointer must be new_addr on success or NULL on error. Committed memory may be committed in absolute terms as on a system that does not overcommit, or in implicit terms as on a system that overcommits and satisfies physical memory needs on demand via soft page faults. Note that replacing the default extent allocation function makes the arena's arena.i.dss setting irrelevant.