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 "nand_life_config.h"
16 #include "memmgr_log.h"
17 #include "xml_helper.h"
18
19 namespace OHOS {
20 namespace Memory {
21 namespace {
22 const std::string TAG = "NandLifeConfig";
23 }
24
SetDailySwapOutQuotaMb(unsigned long long dailySwapOutQuotaMb)25 void NandLifeConfig::SetDailySwapOutQuotaMb(unsigned long long dailySwapOutQuotaMb)
26 {
27 dailySwapOutQuotaMb_ = dailySwapOutQuotaMb;
28 }
29
GetDailySwapOutQuotaMb(void)30 unsigned long long NandLifeConfig::GetDailySwapOutQuotaMb(void)
31 {
32 return dailySwapOutQuotaMb_;
33 }
34
SetTotalSwapOutQuotaMb(unsigned long long totalSwapOutQuotaMb)35 void NandLifeConfig::SetTotalSwapOutQuotaMb(unsigned long long totalSwapOutQuotaMb)
36 {
37 totalSwapOutQuotaMb_ = totalSwapOutQuotaMb;
38 }
39
GetTotalSwapOutQuotaMb(void)40 unsigned long long NandLifeConfig::GetTotalSwapOutQuotaMb(void)
41 {
42 return totalSwapOutQuotaMb_;
43 }
44
ParseConfig(const xmlNodePtr & rootNodePtr)45 void NandLifeConfig::ParseConfig(const xmlNodePtr &rootNodePtr)
46 {
47 if (!XmlHelper::CheckNode(rootNodePtr) || !XmlHelper::HasChild(rootNodePtr)) {
48 HILOGD("Node exsist:%{public}d,has child node:%{public}d",
49 XmlHelper::CheckNode(rootNodePtr), XmlHelper::HasChild(rootNodePtr));
50 return;
51 }
52
53 for (xmlNodePtr currNode = rootNodePtr->xmlChildrenNode; currNode != nullptr; currNode = currNode->next) {
54 std::string key = std::string(reinterpret_cast<const char *>(currNode->name));
55 if (key == "dailySwapOutQuotaMB") {
56 if (!XmlHelper::ParseUnsignedLongLongContent(currNode, dailySwapOutQuotaMb_)) {
57 HILOGE("parse key :<%{public}s> error", key.c_str());
58 return;
59 }
60 HILOGI("daily_swap_out_quota_mb=%{public}llu", dailySwapOutQuotaMb_);
61 } else if (key == "totalSwapOutQuotaMB") {
62 if (!XmlHelper::ParseUnsignedLongLongContent(currNode, totalSwapOutQuotaMb_)) {
63 HILOGE("parse key :<%{public}s> error", key.c_str());
64 return;
65 }
66 HILOGI("total_swap_out_quota_mb=%{public}llu", totalSwapOutQuotaMb_);
67 } else {
68 HILOGW("unknown key :<%{public}s>", key.c_str());
69 }
70 }
71 }
72
Dump(int fd)73 void NandLifeConfig::Dump(int fd)
74 {
75 dprintf(fd, "NandLifeConfig: \n");
76 dprintf(fd, " dailySwapOutQuotaMb: %llu\n", dailySwapOutQuotaMb_);
77 dprintf(fd, " totalSwapOutQuotaMb: %llu\n", totalSwapOutQuotaMb_);
78 }
79 } // namespace Memory
80 } // namespace OHOS
81