1570af302Sopenharmony_ci/*
2570af302Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd.
3570af302Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4570af302Sopenharmony_ci * you may not use this file except in compliance with the License.
5570af302Sopenharmony_ci * You may obtain a copy of the License at
6570af302Sopenharmony_ci *
7570af302Sopenharmony_ci *    http://www.apache.org/licenses/LICENSE-2.0
8570af302Sopenharmony_ci *
9570af302Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10570af302Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11570af302Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12570af302Sopenharmony_ci * See the License for the specific language governing permissions and
13570af302Sopenharmony_ci * limitations under the License.
14570af302Sopenharmony_ci */
15570af302Sopenharmony_ci
16570af302Sopenharmony_ci#include <stdarg.h>
17570af302Sopenharmony_ci#include <malloc.h>
18570af302Sopenharmony_ci#include <errno.h>
19570af302Sopenharmony_ci#include <string.h>
20570af302Sopenharmony_ci#include "pthread_impl.h"
21570af302Sopenharmony_ci
22570af302Sopenharmony_ciint malloc_info(int options, FILE* fp)
23570af302Sopenharmony_ci{
24570af302Sopenharmony_ci	return 0;
25570af302Sopenharmony_ci}
26570af302Sopenharmony_ci
27570af302Sopenharmony_ci#ifdef USE_JEMALLOC_DFX_INTF
28570af302Sopenharmony_ciextern struct mallinfo je_mallinfo();
29570af302Sopenharmony_ciextern void je_malloc_stats_print(void (*write_cb)(void *, const char *), void *cbopaque,
30570af302Sopenharmony_ci	const char *opts);
31570af302Sopenharmony_ci#endif
32570af302Sopenharmony_ci
33570af302Sopenharmony_civoid malloc_stats_print(void (*write_cb) (void *, const char *), void *cbopaque, const char *opts)
34570af302Sopenharmony_ci{
35570af302Sopenharmony_ci#ifdef USE_JEMALLOC_DFX_INTF
36570af302Sopenharmony_ci	je_malloc_stats_print(write_cb, cbopaque, opts);
37570af302Sopenharmony_ci#endif
38570af302Sopenharmony_ci}
39570af302Sopenharmony_ci
40570af302Sopenharmony_cistruct mallinfo2 mallinfo2(void)
41570af302Sopenharmony_ci{
42570af302Sopenharmony_ci#ifdef USE_JEMALLOC_DFX_INTF
43570af302Sopenharmony_ci	struct mallinfo info = je_mallinfo();
44570af302Sopenharmony_ci	struct mallinfo2 res = {
45570af302Sopenharmony_ci		.hblks = info.hblks,
46570af302Sopenharmony_ci		.hblkhd = info.hblkhd,
47570af302Sopenharmony_ci		.usmblks = info.usmblks,
48570af302Sopenharmony_ci		.uordblks = info.uordblks,
49570af302Sopenharmony_ci		.fordblks = info.fordblks,
50570af302Sopenharmony_ci	};
51570af302Sopenharmony_ci	return res;
52570af302Sopenharmony_ci#endif
53570af302Sopenharmony_ci	return (struct mallinfo2){};
54570af302Sopenharmony_ci}
55570af302Sopenharmony_ci
56570af302Sopenharmony_cistruct mallinfo mallinfo(void)
57570af302Sopenharmony_ci{
58570af302Sopenharmony_ci	struct mallinfo2 mallinfo2_res = mallinfo2();
59570af302Sopenharmony_ci	return (struct mallinfo) {
60570af302Sopenharmony_ci		.hblks = mallinfo2_res.hblks,
61570af302Sopenharmony_ci		.hblkhd = mallinfo2_res.hblkhd,
62570af302Sopenharmony_ci		.uordblks = mallinfo2_res.uordblks,
63570af302Sopenharmony_ci		.fordblks = mallinfo2_res.fordblks,
64570af302Sopenharmony_ci	};
65570af302Sopenharmony_ci}