/* * Copyright (C) 2017 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 = "proto2"; option java_multiple_files = true; import "frameworks/base/core/proto/android/privacy.proto"; package android.os; /** * Data structure of the linux command * 'top -b -n 1 -H -s 6 -o pid,tid,user,pr,ni,%cpu,s,virt,res,pcy,cmd,name' * * Next Tag: 6 */ message CpuInfoProto { option (android.msg_privacy).dest = DEST_AUTOMATIC; message TaskStats { option (android.msg_privacy).dest = DEST_AUTOMATIC; optional int32 total = 1; // total number of cpu tasks optional int32 running = 2; // number of running tasks optional int32 sleeping = 3; // number of sleeping tasks optional int32 stopped = 4; // number of stopped tasks optional int32 zombie = 5; // number of zombie tasks } optional TaskStats task_stats = 1; message MemStats { // unit in kB option (android.msg_privacy).dest = DEST_AUTOMATIC; optional int32 total = 1; optional int32 used = 2; optional int32 free = 3; optional int32 buffers = 4; optional int32 cached = 5; } optional MemStats mem = 2; optional MemStats swap = 3; message CpuUsage { // unit is percentage % option (android.msg_privacy).dest = DEST_AUTOMATIC; optional int32 cpu = 1; // 400% cpu indicates 4 cores optional int32 user = 2; optional int32 nice = 3; optional int32 sys = 4; optional int32 idle = 5; optional int32 iow = 6; optional int32 irq = 7; optional int32 sirq = 8; optional int32 host = 9; } optional CpuUsage cpu_usage = 4; // Next Tag: 13 message Task { option (android.msg_privacy).dest = DEST_AUTOMATIC; optional int32 pid = 1; optional int32 tid = 2; optional string user = 3; // the process name which uses cpu optional string pr = 4; // priority of each task, using string type is because special value RT (real time) optional sint32 ni = 5; // niceness value optional float cpu = 6; // precentage of cpu usage of the task enum Status { STATUS_UNKNOWN = 0; STATUS_D = 1; // uninterruptible sleep STATUS_R = 2; // running STATUS_S = 3; // sleeping STATUS_T = 4; // traced or stopped STATUS_Z = 5; // zombie } optional Status s = 7; // process status optional string virt = 8; // virtual memory size, i.e. 14.0G, 13.5M optional string res = 9; // Resident size, i.e. 0, 3.1G // How Android memory manager will treat the task. // TODO: use PsDumpProto.Process.Policy instead once we extern variables // and are able to include the same .h file in two files. enum Policy { POLICY_UNKNOWN = 0; POLICY_fg = 1; // foreground, the name is lower case for parsing the value POLICY_bg = 2; // background, the name is lower case for parsing the value POLICY_ta = 3; // TODO: figure out what is this value } optional Policy pcy = 10; // Policy of the task optional string cmd = 11; // thread name optional string name = 12; // program name } repeated Task tasks = 5; }