• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifndef OHOS_BATTERY_MANAGER_MEMORY_GUARD_H
16 #define OHOS_BATTERY_MANAGER_MEMORY_GUARD_H
17 #include "nocopyable.h"
18 #include "battery_log.h"
19 #include "malloc.h"
20 namespace OHOS {
21 namespace PowerMgr {
22 class MemoryGuard {
23 public:
24     DISALLOW_COPY_AND_MOVE(MemoryGuard);
MemoryGuard()25     MemoryGuard()
26     {
27         int setCache = mallopt(M_SET_THREAD_CACHE, M_THREAD_CACHE_DISABLE);
28         int setFree = mallopt(M_DELAYED_FREE, M_DELAYED_FREE_DISABLE);
29         if (setCache != 1 || setFree != 1) {
30             BATTERY_HILOGD(
31                 COMP_SVC, "disable tcache and delay free, result[%{public}d, %{public}d]", setCache, setFree);
32         }
33     }
~MemoryGuard()34     ~MemoryGuard()
35     {
36         int err = mallopt(M_FLUSH_THREAD_CACHE, 0);
37         if (err != 1) {
38             BATTERY_HILOGD(COMP_SVC, "flush cache, result: %{public}d", err);
39         }
40     }
41 };
42 } // namespace PowerMgr
43 } // namespace OHOS
44 #endif