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_strategy_constants.h"
18 #include "avail_buffer_config.h"
19 
20 namespace OHOS {
21 namespace Memory {
22 namespace {
23     const std::string TAG = "AvailBufferConfig";
24 }
25 
AvailBufferConfig()26 AvailBufferConfig::AvailBufferConfig()
27 {
28 }
29 
AvailBufferConfig(unsigned int availBuffer,unsigned int minAvailBuffer,unsigned int highAvailBuffer,unsigned int swapReserve)30 AvailBufferConfig::AvailBufferConfig(unsigned int availBuffer, unsigned int minAvailBuffer,
31                                      unsigned int highAvailBuffer, unsigned int swapReserve)
32     : availBuffer_(availBuffer),
33       minAvailBuffer_(minAvailBuffer),
34       highAvailBuffer_(highAvailBuffer),
35       swapReserve_(highAvailBuffer)
36 {
37 }
38 
SetDefaultConfig(unsigned int availBuffer,unsigned int minAvailBuffer,unsigned int highAvailBuffer,unsigned int swapReserve)39 void AvailBufferConfig::SetDefaultConfig(unsigned int availBuffer, unsigned int minAvailBuffer,
40                                          unsigned int highAvailBuffer, unsigned int swapReserve)
41 {
42     SetAvailBuffer(availBuffer);
43     SetMinAvailBuffer(minAvailBuffer);
44     SetHighAvailBuffer(highAvailBuffer);
45     SetSwapReserve(swapReserve);
46 }
47 
ParseConfig(const xmlNodePtr & rootNodePtr)48 void AvailBufferConfig::ParseConfig(const xmlNodePtr &rootNodePtr)
49 {
50     if (!XmlHelper::CheckNode(rootNodePtr) || !XmlHelper::HasChild(rootNodePtr)) {
51         HILOGD("Node exsist:%{public}d,has child node:%{public}d",
52                XmlHelper::CheckNode(rootNodePtr), XmlHelper::HasChild(rootNodePtr));
53         return;
54     }
55 
56     std::map<std::string, std::string> param;
57     if (!XmlHelper::GetModuleParam(rootNodePtr, param)) {
58         HILOGW("Get moudle param failed.");
59         return;
60     }
61     SetAvailBufferConfig(param);
62 }
63 
SetAvailBufferConfig(std::map<std::string,std::string> & param)64 void AvailBufferConfig::SetAvailBufferConfig(std::map<std::string, std::string> &param)
65 {
66     XmlHelper::SetUnsignedIntParam(param, "availBuffer", availBuffer_, AVAIL_BUFFER);
67     XmlHelper::SetUnsignedIntParam(param, "minAvailBuffer", minAvailBuffer_, MIN_AVAIL_BUFFER);
68     XmlHelper::SetUnsignedIntParam(param, "highAvailBuffer", highAvailBuffer_, HIGH_AVAIL_BUFFER);
69     XmlHelper::SetUnsignedIntParam(param, "swapReserve", swapReserve_, SWAP_RESERVE);
70 }
71 
GetAvailBuffer()72 unsigned int AvailBufferConfig::GetAvailBuffer()
73 {
74     return availBuffer_;
75 }
76 
SetAvailBuffer(unsigned int availBuffer)77 void AvailBufferConfig::SetAvailBuffer(unsigned int availBuffer)
78 {
79     availBuffer_ = availBuffer;
80 }
81 
GetMinAvailBuffer()82 unsigned int AvailBufferConfig::GetMinAvailBuffer()
83 {
84     return minAvailBuffer_;
85 }
86 
SetMinAvailBuffer(unsigned int minAvailBuffer)87 void AvailBufferConfig::SetMinAvailBuffer(unsigned int minAvailBuffer)
88 {
89     minAvailBuffer_ = minAvailBuffer;
90 }
91 
GetHighAvailBuffer()92 unsigned int AvailBufferConfig::GetHighAvailBuffer()
93 {
94     return highAvailBuffer_;
95 }
96 
SetHighAvailBuffer(unsigned int highAvailBuffer)97 void AvailBufferConfig::SetHighAvailBuffer(unsigned int highAvailBuffer)
98 {
99     highAvailBuffer_ = highAvailBuffer;
100 }
101 
GetSwapReserve()102 unsigned int AvailBufferConfig::GetSwapReserve()
103 {
104     return swapReserve_;
105 }
106 
SetSwapReserve(unsigned int swapReserve)107 void AvailBufferConfig::SetSwapReserve(unsigned int swapReserve)
108 {
109     swapReserve_ = swapReserve;
110 }
111 
Dump(int fd)112 void AvailBufferConfig::Dump(int fd)
113 {
114     dprintf(fd, "AvailBufferConfig:   \n");
115     dprintf(fd, "                      availBuffer: %u\n", availBuffer_);
116     dprintf(fd, "                   minAvailBuffer: %u\n", minAvailBuffer_);
117     dprintf(fd, "                  highAvailBuffer: %u\n", highAvailBuffer_);
118     dprintf(fd, "                      swapReserve: %u\n", swapReserve_);
119 }
120 } // namespace Memory
121 } // namespace OHOS
122