• 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 
16 #include "process_priority_info.h"
17 #include "memmgr_log.h"
18 #include "reclaim_priority_constants.h"
19 
20 #include <sstream>
21 
22 namespace OHOS {
23 namespace Memory {
24 namespace {
25 const std::string TAG = "ProcessPriorityInfo";
26 } // namespace
27 
ProcessPriorityInfo(pid_t pid,int bundleUid,int priority)28 ProcessPriorityInfo::ProcessPriorityInfo(pid_t pid, int bundleUid, int priority)
29 {
30     this->uid_ = bundleUid;
31     this->pid_ = pid;
32     this->priority_ = priority;
33     this->isFreground = (priority == RECLAIM_PRIORITY_FOREGROUND) ? true : false;
34     this->isBackgroundRunning = false;
35     this->isSuspendDelay = false;
36     this->isEventStart = false;
37     this->isDistDeviceConnected = false;
38     this->extensionBindStatus = EXTENSION_STATUS_BIND_UNKOWN;
39 }
40 
ProcessPriorityInfo(const ProcessPriorityInfo & copyProcess)41 ProcessPriorityInfo::ProcessPriorityInfo(const ProcessPriorityInfo &copyProcess)
42 {
43     this->uid_ = copyProcess.uid_;
44     this->pid_ = copyProcess.pid_;
45     this->priority_ = copyProcess.priority_;
46     this->isFreground = copyProcess.isFreground;
47     this->isBackgroundRunning = copyProcess.isBackgroundRunning;
48     this->isSuspendDelay = copyProcess.isSuspendDelay;
49     this->isEventStart = copyProcess.isEventStart;
50     this->isDistDeviceConnected = copyProcess.isDistDeviceConnected;
51     this->extensionBindStatus = copyProcess.extensionBindStatus;
52     for (auto connectors : copyProcess.extensionConnectors) {
53         this->AddExtensionConnector(connectors);
54     }
55 }
56 
~ProcessPriorityInfo()57 ProcessPriorityInfo::~ProcessPriorityInfo()
58 {
59     extensionConnectors.clear();
60 }
61 
SetPriority(int targetPriority)62 void ProcessPriorityInfo::SetPriority(int targetPriority)
63 {
64     priority_ = targetPriority;
65     HILOGD("set process[%{public}d] priority to %{public}d", pid_, priority_);
66 }
67 
ExtensionConnectorsCount()68 int32_t ProcessPriorityInfo::ExtensionConnectorsCount()
69 {
70     return extensionConnectors.size();
71 }
72 
AddExtensionConnector(int32_t pid)73 void ProcessPriorityInfo::AddExtensionConnector(int32_t pid)
74 {
75     extensionConnectors.insert(pid);
76 }
77 
RemoveExtensionConnector(int32_t pid)78 void ProcessPriorityInfo::RemoveExtensionConnector(int32_t pid)
79 {
80     extensionConnectors.erase(pid);
81 }
82 
ContainsConnector(int32_t pid)83 bool ProcessPriorityInfo::ContainsConnector(int32_t pid)
84 {
85     return extensionConnectors.count(pid) != 0;
86 }
87 
ConnectorsToString()88 std::string ProcessPriorityInfo::ConnectorsToString()
89 {
90     std::stringstream ss;
91     ss << "[";
92     for (auto connector : extensionConnectors) {
93         ss << connector << " ";
94     }
95     ss << "]";
96     return ss.str();
97 }
98 } // namespace Memory
99 } // namespace OHOS
100