Modify CPUBoostingController
[platform/core/appfw/launchpad.git] / src / lib / launchpad-common / cpu_boost_controller.cc
1 /*
2  * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include "launchpad-common/cpu_boost_controller.hh"
18
19 #include <cpu-boosting.h>
20
21 #include "launchpad-common/log_private.hh"
22
23 namespace launchpad {
24
25 void CPUBoostController::DoBoost(pid_t pid, Level level, int timeout_msec) {
26   if (pid < 1)
27     return;
28
29   resource_pid_t res_pid = {
30       .pid = 0,
31       .tid = &pid,
32       .tid_count = 1,
33   };
34
35   int ret = resource_set_cpu_boosting(res_pid,
36       static_cast<cpu_boosting_level_e>(level),
37       static_cast<cpu_boosting_flag_e>(0), timeout_msec);
38   if (ret != 0)
39     _E("resource_set_cpu_boosting() is failed. error: %d", ret);
40   else
41     _D("resource_set_cpu_boosting() is successful");
42 }
43
44 void CPUBoostController::Clear(pid_t pid) {
45   if (pid < 1)
46     return;
47
48   resource_pid_t res_pid = {
49       .pid = 0,
50       .tid = &pid,
51       .tid_count = 1,
52   };
53
54   int ret = resource_clear_cpu_boosting(res_pid);
55   if (ret!= 0)
56     _E("resource_clear_cpu_boosting() is failed. error: %d", ret);
57   else
58     _D("resource_clear_cpu_boosting() is successful");
59 }
60
61 }  // namespace launchpad