Provided by: libmemkind-dev_1.1.0-0ubuntu1_amd64 bug

NAME

       memkind_default.h - default implementations for memkind operations.
       Note:  This  is  EXEPRIMENTAL  API.  The  functionality  and the header file itself can be
       changed (including non-backward compatible changes), or remove.

SYNOPSIS

       #include <memkind/internal/memkind_default.h>

       Link with -lmemkind

       int memkind_default_create(struct memkind *kind, const struct memkind_ops *ops, const char *name);
       int memkind_default_destroy(struct memkind *kind);
       void *memkind_default_malloc(struct memkind *kind, size_t size);
       void *memkind_default_calloc(struct memkind *kind, size_t num, size_t size);
       int memkind_default_posix_memalign(struct memkind *kind, void **memptr, size_t alignment, size_t size);
       void *memkind_default_realloc(struct memkind *kind, void *ptr, size_t size);
       void memkind_default_free(struct memkind *kind, void *ptr);
       void *memkind_default_mmap(struct memkind *kind, void *addr, size_t size);
       int memkind_default_mbind(struct memkind *kind, void *ptr, size_t len);
       int memkind_default_get_mmap_flags(struct memkind *kind, int *flags);
       int memkind_default_get_mbind_mode(struct memkind *kind, int *mode);
       int memkind_preferred_get_mbind_mode(struct memkind *kind, int *mode);
       int memkind_interleave_get_mbind_mode(struct memkind *kind, int *mode);
       int memkind_nohugepage_madvise(struct memkind *kind, void *addr, size_t size);
       int memkind_default_get_size(struct memkind *kind, size_t *total, size_t *free);
       int memkind_posix_check_alignment(struct memkind *kind, size_t alignment);

DESCRIPTION

       Default implementations for memkind operations which include a several useful methods that
       are  not  part  of  the  MEMKIND_DEFAULT  kind  which  is  a  fall through to the jemalloc
       implementation.

       memkind_default_create() implements the required start up for every kind.  If a kind  does
       not point to this function directly for its ops.create() operation, then the function that
       it points to must call memkind_default_create() at its start.

       memkind_default_destroy() implements the required shutdown for every kind.  If a kind does
       not  point  to  this  function directly for its ops.destroy() operation, then the function
       that it points to must call memkind_default_destroy() at its end.

       memkind_default_malloc() is a direct call through to jemk_malloc().

       memkind_default_calloc() is a direct call through to jemk_calloc().

       memkind_default_posix_memalign() is a direct call through to jemk_posix_memalign().

       memkind_default_realloc() is a direct call through to jemk_realloc().

       memkind_default_free().  is a direct call through to jemk_free().  Note that  this  method
       can  be called on any pointer returned by a jemalloc allocation, and in particular, all of
       the arena allocations described in memkind_arena(3) can use this function for freeing.

       memkind_default_mmap() This calls the ops->get_mmap_flags() operations for  the  kind,  or
       falls  back on the default implementations if the function pointers are NULL.  The results
       of these calls are passed to the mmap(2) call to allocate pages from the operating system.
       The  addr  is  the hint passed through to mmap(2) and size is the size of the buffer to be
       allocated.  The return value is the allocated buffer or  MAP_FAILED  in  the  case  of  an
       error.

       memkind_default_mbind()    makes    calls    the   kind's   ops.get_mbind_nodemask()   and
       ops.get_mbind_mode() operations to gather inputs and then calls the mbind(2)  system  call
       using the results along with and user input ptr and len.

       memkind_default_get_mmap_flags()  sets  flags to MAP_PRIVATE | MAP_ANONYMOUS.  See mmap(2)
       for more information about these flags.

       memkind_default_get_mbind_mode()  sets  mode  to  MPOL_BIND.   See   mbind(2)   for   more
       information about this flag.

       memkind_preferred_get_mbind_mode()  sets  mode  to  MPOL_PREFERRED.  See mbind(2) for more
       information about this flag.

       memkind_interleave_get_mbind_mode() sets mode to MPOL_INTERLEAVE.  See mbind(2)  for  more
       information about this flag.

       memkind_nohugepage_madvise()  calls  madvise(2)  with  the  MADV_NOHUGEPAGE  advice.   See
       madvise(2) for more information about this option.

       memkind_default_get_size() sums the values returned  by  numa_node_size64()  function  for
       every  NUMA  node set by the .get_node_mask() operation.  If the .get_node_mask pointer is
       NULL then the values are summed for all NUMA nodes.

       memkind_posix_check_alignment()  can  be  used  to   check   the   alignment   value   for
       memkind_posix_memalign()  to  ensure  that  is abides by the POSIX requirements: alignment
       must be a power of 2 at least as large as sizeof(void *).

COPYRIGHT

       Copyright (C) 2014 - 2016 Intel Corporation. All rights reserved.

SEE ALSO

       memkind(3),  memkind_arena(3),   memkind_hbw(3),   memkind_hugetlb(3),   memkind_gbtlb(3),
       memkind_pmem(3), jemalloc(3), mbind(2), mmap(2)