Interface ExtentMergeI

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

    @FunctionalInterface
    public interface ExtentMergeI
    extends CallbackI.Z
    Instances of this interface may be set to the ExtentHooks struct.

    Type

    
     bool (*) (
         extent_hooks_t *extent_hooks,
         void *addr_a,
         size_t size_a,
         void *addr_b,
         size_t size_b,
         bool committed,
         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
        Returns:
        the dyncall signature
      • callback

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

        boolean invoke​(long extent_hooks,
                       long addr_a,
                       long size_a,
                       long addr_b,
                       long size_b,
                       boolean committed,
                       int arena_ind)
        Extent merge hook.

        An extent merge function conforms to the extent_merge_t type and optionally merges adjacent extents, at given addr_a and size_a with given addr_b and size_b into one contiguous extent, operating on committed/decommitted memory as indicated, on behalf of arena arena_ind, returning false upon success. If the function returns true, this indicates that the extents remain distinct mappings and therefore should continue to be operated on independently.