1MEMKIND_DEFAULT(3)              MEMKIND_DEFAULT             MEMKIND_DEFAULT(3)
2
3
4

NAME

6       memkind_default - default implementations for memkind operations.
7       Note:  This  is EXPERIMENTAL API. The functionality and the header file
8       itself can be changed (including non-backward compatible  changes),  or
9       removed.
10

SYNOPSIS

12       int  memkind_default_create(struct  memkind  *kind,  struct memkind_ops
13       *ops, const char *name);
14       int memkind_default_destroy(struct memkind *kind);
15       void *memkind_default_malloc(struct memkind *kind, size_t size);
16       void *memkind_default_calloc(struct memkind *kind, size_t  num,  size_t
17       size);
18       int memkind_default_posix_memalign(struct memkind *kind, void **memptr,
19       size_t alignment, size_t size);
20       void *memkind_default_realloc(struct memkind *kind, void  *ptr,  size_t
21       size);
22       void memkind_default_free(struct memkind *kind, void *ptr);
23       void  *memkind_default_mmap(struct  memkind  *kind,  void *addr, size_t
24       size);
25       int memkind_default_mbind(struct memkind *kind, void *ptr, size_t len);
26       int memkind_default_get_mmap_flags(struct memkind *kind, int *flags);
27       int memkind_default_get_mbind_mode(struct memkind *kind, int *mode);
28       size_t memkind_default_malloc_usable_size(struct  memkind  *kind,  void
29       *ptr);
30       int memkind_preferred_get_mbind_mode(struct memkind *kind, int *mode);
31       int memkind_interleave_get_mbind_mode(struct memkind *kind, int *mode);
32       int memkind_nohugepage_madvise(struct memkind *kind, void *addr, size_t
33       size);
34       int memkind_posix_check_alignment(struct memkind *kind,  size_t  align‐
35       ment);
36       int  memkind_default_get_mbind_nodemask(struct  memkind *kind, unsigned
37       long *nodemask, unsigned long maxnode);
38       void memkind_default_init_once(void);
39       bool size_out_of_bounds(size_t size);
40

DESCRIPTION

42       Default implementations for memkind operations which include a  several
43       useful methods that are not part of the MEMKIND_DEFAULT kind which is a
44       fall through to the jemalloc implementation.
45
46       memkind_default_create() implements the required  start  up  for  every
47       kind.  If  a  kind  does  not  point  to this function directly for its
48       ops.create() operation, then the function that it points to  must  call
49       memkind_default_create() at its start.
50
51       memkind_default_destroy()  implements  the  required shutdown for every
52       kind. If a kind does not  point  to  this  function  directly  for  its
53       ops.destroy()  operation, then the function that it points to must call
54       memkind_default_destroy() at its end.
55
56       memkind_default_malloc() is a direct call through the  jemalloc's  mal‐
57       loc().
58
59       memkind_default_calloc()  is  a direct call through the jemalloc's cal‐
60       loc().
61
62       memkind_default_posix_memalign() is a direct call  through  the  jemal‐
63       loc's posix_memalign().
64
65       memkind_default_realloc() is a direct call through the jemalloc's real‐
66       loc().
67
68       memkind_default_free() is a direct call through the jemalloc's  free().
69       Note that this method can be called on any pointer returned by a jemal‐
70       loc allocation, and in particular, all of  the  arena  allocations  de‐
71       scribed in memkind_arena(3) can use this function for freeing.
72
73       memkind_default_mmap()  This calls the ops->get_mmap_flags() operations
74       for the kind, or falls back on the default implementations if the func‐
75       tion  pointers  are NULL.  The results of these calls are passed to the
76       mmap(2) call to allocate pages from the operating system.  The addr  is
77       the  hint  passed through to mmap(2) and size is the size of the buffer
78       to  be  allocated.   The  return  value  is  the  allocated  buffer  or
79       MAP_FAILED in the case of an error.
80
81       memkind_default_mbind() makes calls the kind's ops.get_mbind_nodemask()
82       and ops.get_mbind_mode() operations to gather inputs and then calls the
83       mbind(2)  system  call  using the results along with and user input ptr
84       and len.
85
86       memkind_default_get_mmap_flags() sets flags to MAP_PRIVATE | MAP_ANONY‐
87       MOUS.  See mmap(2) for more information about these flags.
88
89       memkind_default_get_mbind_mode()  sets mode to MPOL_BIND.  See mbind(2)
90       for more information about this flag.
91
92       memkind_default_malloc_usable_size() is a direct call through  the  je‐
93       malloc's malloc_usable_size().
94
95       memkind_preferred_get_mbind_mode()  sets  mode  to MPOL_PREFERRED.  See
96       mbind(2) for more information about this flag.
97
98       memkind_interleave_get_mbind_mode() sets mode to MPOL_INTERLEAVE.   See
99       mbind(2) for more information about this flag.
100
101       memkind_nohugepage_madvise()  calls madvise(2) with the MADV_NOHUGEPAGE
102       advice.  See madvise(2) for more information about this option.
103
104       memkind_posix_check_alignment() can be  used  to  check  the  alignment
105       value  for  memkind_posix_memalign()  to  ensure  that is abides by the
106       POSIX requirements: alignment must be a power of 2 at least as large as
107       sizeof(void*).
108
109       memkind_default_get_mbind_nodemask()    wraps    jemalloc's   copy_bit‐
110       mask_to_bitmask.  This function copies body of  the  bitmask  structure
111       into passed pointer.
112
113       memkind_default_init_once() initializes heap manager.
114
115       size_out_of_bounds()  returns true if given size is out of bounds, oth‐
116       erwise will return false.
117
119       Copyright (C) 2014 - 2020 Intel Corporation. All rights reserved.
120

SEE ALSO

122       memkind(3),   memkind_arena(3),   memkind_hbw(3),   memkind_hugetlb(3),
123       memkind_pmem(3), jemalloc(3), mbind(2), mmap(2)
124
125
126
127Intel Corporation                 2015-04-21                MEMKIND_DEFAULT(3)
Impressum