1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #pragma once
18 
19 #include <jemalloc/jemalloc.h>
20 #include <malloc.h>  // For struct mallinfo.
21 
22 // Need to wrap memalign since je_memalign fails on non-power of 2 alignments.
23 #define je_memalign je_memalign_round_up_boundary
24 
25 // Need to wrap aligned_alloc since je_aligned_alloc does not enforce
26 // that size is a multiple of alignment.
27 #define je_aligned_alloc je_aligned_alloc_wrapper
28 
29 __BEGIN_DECLS
30 
31 void* je_aligned_alloc_wrapper(size_t, size_t);
32 int je_malloc_iterate(uintptr_t, size_t, void (*)(uintptr_t, size_t, void*), void*);
33 int je_mallctl(const char *name, void *oldp, size_t *oldlenp, void *newp, size_t newlen) __attribute__((nothrow));
34 struct mallinfo je_mallinfo();
35 void je_malloc_disable();
36 void je_malloc_enable();
37 int je_malloc_info(int options, FILE* fp);
38 int je_mallopt(int, int);
39 void* je_memalign_round_up_boundary(size_t, size_t);
40 void* je_pvalloc(size_t);
41 
42 __END_DECLS
43