Class ExtentHooks

  • All Implemented Interfaces:
    java.lang.AutoCloseable, org.lwjgl.system.NativeResource, org.lwjgl.system.Pointer

    public class ExtentHooks
    extends org.lwjgl.system.Struct
    implements org.lwjgl.system.NativeResource
    The extent_hooks_t structure comprises function pointers which are described individually below. jemalloc uses these functions to manage extent lifetime, which starts off with allocation of mapped committed memory, in the simplest case followed by deallocation. However, there are performance and platform reasons to retain extents for later reuse. Cleanup attempts cascade from deallocation to decommit to forced purging to lazy purging, which gives the extent management functions opportunities to reject the most permanent cleanup operations in favor of less permanent (and often less costly) operations. All operations except allocation can be universally opted out of by setting the hook pointers to NULL, or selectively opted out of by returning failure.

    Layout

    
     struct extent_hooks_t {
         extent_alloc_t alloc();
         extent_dalloc_t dalloc();
         extent_destroy_t destroy();
         extent_commit_t commit();
         extent_decommit_t decommit();
         extent_purge_t purge_lazy();
         extent_purge_t purge_forced();
         extent_split_t split();
         extent_merge_t merge();
     }
    • Field Detail

      • SIZEOF

        The struct size in bytes.
      • ALIGNOF

        The struct alignment in bytes.
      • ALLOC, DALLOC, DESTROY, COMMIT, DECOMMIT, PURGE_LAZY, PURGE_FORCED, SPLIT, MERGE

        The struct member offsets.
    • Constructor Detail

      • ExtentHooks

        public ExtentHooks​(java.nio.ByteBuffer container)
        Creates a ExtentHooks instance at the current position of the specified ByteBuffer container. Changes to the buffer's content will be visible to the struct instance and vice versa.

        The created instance holds a strong reference to the container object.

    • Method Detail

      • sizeof

        public int sizeof()
        Specified by:
        sizeof in class org.lwjgl.system.Struct
      • alloc

        public ExtentAlloc alloc()
        the extent allocation hook
      • dalloc

        @Nullable
        public ExtentDalloc dalloc()
        the extent deallocation hook
      • destroy

        @Nullable
        public ExtentDestroy destroy()
        the extent destruction hook
      • commit

        @Nullable
        public ExtentCommit commit()
        the extent commit hook
      • decommit

        @Nullable
        public ExtentDecommit decommit()
        the extent decommit hook
      • purge_lazy

        @Nullable
        public ExtentPurge purge_lazy()
        the extent lazy purge hook
      • purge_forced

        @Nullable
        public ExtentPurge purge_forced()
        the extent forced purge hook
      • split

        @Nullable
        public ExtentSplit split()
        the extent split hook
      • merge

        @Nullable
        public ExtentMerge merge()
        the extent merge hook
      • set

        public ExtentHooks set​(ExtentHooks src)
        Copies the specified struct data to this struct.
        Parameters:
        src - the source struct
        Returns:
        this struct
      • malloc

        public static ExtentHooks malloc()
        Returns a new ExtentHooks instance allocated with memAlloc. The instance must be explicitly freed.
      • calloc

        public static ExtentHooks calloc()
        Returns a new ExtentHooks instance allocated with memCalloc. The instance must be explicitly freed.
      • create

        public static ExtentHooks create()
        Returns a new ExtentHooks instance allocated with BufferUtils.
      • create

        public static ExtentHooks create​(long address)
        Returns a new ExtentHooks instance for the specified memory address.
      • createSafe

        @Nullable
        public static ExtentHooks createSafe​(long address)
        Like create, but returns null if address is NULL.
      • mallocStack

        @Deprecated
        public static ExtentHooks mallocStack​(org.lwjgl.system.MemoryStack stack)
        Deprecated.
        Deprecated for removal in 3.4.0. Use malloc(MemoryStack) instead.
      • callocStack

        @Deprecated
        public static ExtentHooks callocStack​(org.lwjgl.system.MemoryStack stack)
        Deprecated.
        Deprecated for removal in 3.4.0. Use calloc(MemoryStack) instead.
      • malloc

        public static ExtentHooks malloc​(org.lwjgl.system.MemoryStack stack)
        Returns a new ExtentHooks instance allocated on the specified MemoryStack.
        Parameters:
        stack - the stack from which to allocate
      • calloc

        public static ExtentHooks calloc​(org.lwjgl.system.MemoryStack stack)
        Returns a new ExtentHooks instance allocated on the specified MemoryStack and initializes all its bits to zero.
        Parameters:
        stack - the stack from which to allocate
      • ndalloc

        @Nullable
        public static ExtentDalloc ndalloc​(long struct)
        Unsafe version of dalloc().
      • ncommit

        @Nullable
        public static ExtentCommit ncommit​(long struct)
        Unsafe version of commit().
      • nsplit

        @Nullable
        public static ExtentSplit nsplit​(long struct)
        Unsafe version of split().
      • nmerge

        @Nullable
        public static ExtentMerge nmerge​(long struct)
        Unsafe version of merge().
      • nalloc

        public static void nalloc​(long struct,
                                  ExtentAllocI value)
        Unsafe version of alloc.
      • ndalloc

        public static void ndalloc​(long struct,
                                   @Nullable
                                   ExtentDallocI value)
        Unsafe version of dalloc.
      • ndestroy

        public static void ndestroy​(long struct,
                                    @Nullable
                                    ExtentDestroyI value)
        Unsafe version of destroy.
      • ncommit

        public static void ncommit​(long struct,
                                   @Nullable
                                   ExtentCommitI value)
        Unsafe version of commit.
      • ndecommit

        public static void ndecommit​(long struct,
                                     @Nullable
                                     ExtentDecommitI value)
        Unsafe version of decommit.
      • npurge_lazy

        public static void npurge_lazy​(long struct,
                                       @Nullable
                                       ExtentPurgeI value)
        Unsafe version of purge_lazy.
      • npurge_forced

        public static void npurge_forced​(long struct,
                                         @Nullable
                                         ExtentPurgeI value)
        Unsafe version of purge_forced.
      • nsplit

        public static void nsplit​(long struct,
                                  @Nullable
                                  ExtentSplitI value)
        Unsafe version of split.
      • nmerge

        public static void nmerge​(long struct,
                                  @Nullable
                                  ExtentMergeI value)
        Unsafe version of merge.
      • validate

        public static void validate​(long struct)
        Validates pointer members that should not be NULL.
        Parameters:
        struct - the struct to validate