7f19b1e6de
Memory cgroup controller is not used by high-end Android devices and is disabled in Android kernels 5.10+, however Android Go devices still require this controller. Similarly schedtune controller is being replaced with cpu controller's utilclamp feature, however some devices are using older kernels which only support schedtune. To prevent spamming logcat with errors we need a way to mark a controller optional in such cases without removing it from cgroups.json file. Introduce "Optional" attribute to cgroup controller's cgroups.json description to accomodate these cases. When an optional controller fails to mount due to lack of support in the kernel it will log an informational message without generating further errors. Bug: 181866655 Test: boot and observe libprocessgroup messages in logcat Signed-off-by: Suren Baghdasaryan <surenb@google.com> Change-Id: Ib5bcfdd8d338704f3f9d8b326d8ddd88b67915a1
48 lines
1.6 KiB
Protocol Buffer
48 lines
1.6 KiB
Protocol Buffer
/*
|
|
* Copyright (C) 2019 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
syntax = "proto3";
|
|
|
|
package android.profiles;
|
|
|
|
// Next: 3
|
|
message Cgroups {
|
|
repeated Cgroup cgroups = 1 [json_name = "Cgroups"];
|
|
Cgroups2 cgroups2 = 2 [json_name = "Cgroups2"];
|
|
}
|
|
|
|
// Next: 8
|
|
message Cgroup {
|
|
string controller = 1 [json_name = "Controller"];
|
|
string path = 2 [json_name = "Path"];
|
|
string mode = 3 [json_name = "Mode"];
|
|
string uid = 4 [json_name = "UID"];
|
|
string gid = 5 [json_name = "GID"];
|
|
// Booleans default to false when not specified. File reconstruction fails
|
|
// when a boolean is specified as false, so leave unspecified in that case
|
|
// https://developers.google.com/protocol-buffers/docs/proto3#default
|
|
bool needs_activation = 6 [json_name = "NeedsActivation"];
|
|
bool is_optional = 7 [json_name = "Optional"];
|
|
}
|
|
|
|
// Next: 6
|
|
message Cgroups2 {
|
|
string path = 1 [json_name = "Path"];
|
|
string mode = 2 [json_name = "Mode"];
|
|
string uid = 3 [json_name = "UID"];
|
|
string gid = 4 [json_name = "GID"];
|
|
repeated Cgroup controllers = 5 [json_name = "Controllers"];
|
|
}
|