• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 #include "memmgr_log.h"
16 #include "xml_helper.h"
17 #include "reclaim_config.h"
18 
19 namespace OHOS {
20 namespace Memory {
21 namespace {
22     const std::string TAG = "ReclaimConfig";
23 }
24 
ReclaimConfig()25 ReclaimConfig::ReclaimConfig()
26 {
27 }
28 
SetDefaultConfig(int minScore,int maxScore,unsigned int mem2zramRatio,unsigned int zram2ufsRatio,unsigned int refaultThreshold)29 void ReclaimConfig::SetDefaultConfig(int minScore, int maxScore, unsigned int mem2zramRatio,
30                                      unsigned int zram2ufsRatio, unsigned int refaultThreshold)
31 {
32     DECLARE_SHARED_POINTER(ZswapdParam, zswapdParam);
33 
34     MAKE_POINTER(zswapdParam, shared, ZswapdParam, "make default ZswapdParam failed", return,
35         minScore, maxScore, mem2zramRatio, zram2ufsRatio, refaultThreshold);
36     AddReclaimConfigToSet(zswapdParam);
37 }
38 
ParseConfig(const xmlNodePtr & rootNodePtr)39 void ReclaimConfig::ParseConfig(const xmlNodePtr &rootNodePtr)
40 {
41     if (!XmlHelper::CheckNode(rootNodePtr) || !XmlHelper::HasChild(rootNodePtr)) {
42         HILOGD("Node exsist:%{public}d,has child node:%{public}d",
43                XmlHelper::CheckNode(rootNodePtr), XmlHelper::HasChild(rootNodePtr));
44         return;
45     }
46 
47     std::map<std::string, std::string> param;
48     for (xmlNodePtr currNode = rootNodePtr->xmlChildrenNode; currNode != nullptr; currNode = currNode->next) {
49         if (!XmlHelper::GetModuleParam(currNode, param)) {
50             HILOGW("Get moudle param failed.");
51             return;
52         }
53         SetZswapdParamConfig(param);
54     }
55 }
56 
SetZswapdParamConfig(std::map<std::string,std::string> & param)57 void ReclaimConfig::SetZswapdParamConfig(std::map<std::string, std::string> &param)
58 {
59     int minScore, maxScore;
60     unsigned int mem2zramRatio, zram2ufsRatio, refaultThreshold;
61 
62     XmlHelper::SetIntParam(param, "minScore", minScore, 0);
63     XmlHelper::SetIntParam(param, "maxScore", maxScore, RECLAIM_PRIORITY_MAX);
64     XmlHelper::SetUnsignedIntParam(param, "mem2zramRatio", mem2zramRatio, MEMCG_MEM_2_ZRAM_RATIO);
65     XmlHelper::SetUnsignedIntParam(param, "zram2ufsRatio", zram2ufsRatio, MEMCG_ZRAM_2_UFS_RATIO);
66     XmlHelper::SetUnsignedIntParam(param, "refaultThreshold", refaultThreshold, MEMCG_REFAULT_THRESHOLD);
67 
68     DECLARE_SHARED_POINTER(ZswapdParam, zswapdParam);
69     MAKE_POINTER(zswapdParam, shared, ZswapdParam, "make ZswapdParam failed", return,
70         minScore, maxScore, mem2zramRatio, zram2ufsRatio, refaultThreshold);
71 
72     AddReclaimConfigToSet(zswapdParam);
73 }
74 
AddReclaimConfigToSet(std::shared_ptr<ZswapdParam> zswapdParam)75 void ReclaimConfig::AddReclaimConfigToSet(std::shared_ptr<ZswapdParam> zswapdParam)
76 {
77     reclaimConfigSet_.insert(zswapdParam);
78 }
79 
ClearReclaimConfigSet()80 void ReclaimConfig::ClearReclaimConfigSet()
81 {
82     reclaimConfigSet_.clear();
83 }
84 
GetReclaimConfigSet()85 const ReclaimConfig::ReclaimConfigSet& ReclaimConfig::GetReclaimConfigSet()
86 {
87     return reclaimConfigSet_;
88 }
89 
ZswapdParam()90 ZswapdParam::ZswapdParam()
91 {
92 }
93 
ZswapdParam(int minScore,int maxScore,unsigned int mem2zramRatio,unsigned int zram2ufsRatio,unsigned int refaultThreshold)94 ZswapdParam::ZswapdParam(int minScore, int maxScore, unsigned int mem2zramRatio,
95                          unsigned int zram2ufsRatio, unsigned int refaultThreshold)
96     : minScore_(minScore),
97       maxScore_(maxScore),
98       mem2zramRatio_(mem2zramRatio),
99       zram2ufsRatio_(zram2ufsRatio),
100       refaultThreshold_(refaultThreshold)
101 {
102 }
103 
GetMinScore()104 int ZswapdParam::GetMinScore()
105 {
106     return minScore_;
107 }
108 
SetMinScore(int minScore)109 void ZswapdParam::SetMinScore(int minScore)
110 {
111     minScore_ = minScore;
112 }
113 
GetMaxScore()114 int ZswapdParam::GetMaxScore()
115 {
116     return maxScore_;
117 }
118 
SetMaxScore(int maxScore)119 void ZswapdParam::SetMaxScore(int maxScore)
120 {
121     maxScore_ = maxScore;
122 }
123 
GetMem2zramRatio()124 unsigned int ZswapdParam::GetMem2zramRatio()
125 {
126     return mem2zramRatio_;
127 }
128 
SetMem2zramRatio(unsigned int mem2zramRatio)129 void ZswapdParam::SetMem2zramRatio(unsigned int mem2zramRatio)
130 {
131     mem2zramRatio_ = mem2zramRatio;
132 }
133 
GetZram2ufsRatio()134 unsigned int ZswapdParam::GetZram2ufsRatio()
135 {
136     return zram2ufsRatio_;
137 }
138 
SetZram2ufsRatio(unsigned int zram2ufsRatio)139 void ZswapdParam::SetZram2ufsRatio(unsigned int zram2ufsRatio)
140 {
141     zram2ufsRatio_ = zram2ufsRatio;
142 }
143 
GetRefaultThreshold()144 unsigned int ZswapdParam::GetRefaultThreshold()
145 {
146     return refaultThreshold_;
147 }
148 
SetRefaultThreshold(unsigned int refaultThreshold)149 void ZswapdParam::SetRefaultThreshold(unsigned int refaultThreshold)
150 {
151     refaultThreshold_ = refaultThreshold;
152 }
153 
Dump(int fd)154 void ReclaimConfig::Dump(int fd)
155 {
156     int index = 0;
157     for (auto it = reclaimConfigSet_.begin(); it != reclaimConfigSet_.end(); it++) {
158         index++;
159         dprintf(fd, "ReclaimConfig %d:   \n", index);
160         dprintf(fd, "                      minScore: %d\n", (*it)->GetMinScore());
161         dprintf(fd, "                      maxScore: %d\n", (*it)->GetMaxScore());
162         dprintf(fd, "                 mem2zramRatio: %u\n", (*it)->GetMem2zramRatio());
163         dprintf(fd, "                 zram2ufsRatio: %u\n", (*it)->GetZram2ufsRatio());
164         dprintf(fd, "              refaultThreshold: %u\n", (*it)->GetRefaultThreshold());
165     }
166 }
167 } // namespace Memory
168 } // namespace OHOS
169