/* * Copyright (C) 2016 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. */ package android.hardware.memtrack@1.0; /** * SMAPS_ACCOUNTED/SMAPS_UNACCOUNTED * Flags to differentiate memory that can already be accounted for in * /proc//smaps, * (Shared_Clean + Shared_Dirty + Private_Clean + Private_Dirty = Size). * In general, memory mapped in to a userspace process is accounted unless * it was mapped with remap_pfn_range. * Exactly one of these must be set. * * SHARED/SHARED_PSS/PRIVATE * Flags to differentiate memory shared across multiple processes vs. memory * used by a single process. * If SHARED_PSS flags is used, the memory must be divided by the number of * processes holding reference to it (shared / num_processes). * Only zero or one of these may be set in a record. * If none are set, record is assumed to count shared + private memory. * * SYSTEM/DEDICATED * Flags to differentiate memory taken from the kernel's allocation pool vs. * memory that is dedicated to non-kernel allocations, for example a carveout * or separate video memory. Only zero or one of these may be set in a record. * If none are set, record is assumed to count system + dedicated memory. * * NONSECURE/SECURE * Flags to differentiate memory accessible by the CPU in non-secure mode vs. * memory that is protected. Only zero or one of these may be set in a record. * If none are set, record is assumed to count secure + nonsecure memory. */ enum MemtrackFlag : uint32_t { SMAPS_ACCOUNTED = 1 << 1, SMAPS_UNACCOUNTED = 1 << 2, SHARED = 1 << 3, SHARED_PSS = 1 << 4, PRIVATE = 1 << 5, SYSTEM = 1 << 6, DEDICATED = 1 << 7, NONSECURE = 1 << 8, SECURE = 1 << 9, }; /** Tags which define the usage of the memory buffers. */ enum MemtrackType : uint32_t { OTHER = 0, GL = 1, GRAPHICS = 2, MULTIMEDIA = 3, CAMERA = 4, NUM_TYPES, }; enum MemtrackStatus : uint32_t { SUCCESS = 0, MEMORY_TRACKING_NOT_SUPPORTED = 1, TYPE_NOT_SUPPORTED = 2, }; /* A vector of MemtrackRecord is returned by the function getMemory(). * Each record consists of the size of the memory used by the process and * flags indicate the all the MemtrackFlag that are valid for this record. * see getMemory() comments for further details. */ struct MemtrackRecord { uint64_t sizeInBytes; /** * This is the bitfield for the MemtrackFlag indicating all the flags that * are valid for this record. */ uint32_t flags; };