blob: 189312a53a5ebd4b0c1ed628bb771b477b754f03 [file] [log] [blame]
/*
* 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/<pid>/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;
};