// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef LIBMEMTRACK_WRAPPER_H_
#define LIBMEMTRACK_WRAPPER_H_
#include <stdint.h>
// Wrapper on top of libmemtrack API.
// Opaque structure with memory stats.
// See $ANDROID/system/core/libmemtrack/include/memtrack/memtrack.h for details.
struct libmemtrack_proc;
// These numbers are vendor-specific and can't be trusted as a stable metric
// across different hardware or driver versions.
class MemtrackProc {
public:
explicit MemtrackProc(int pid);
~MemtrackProc();
uint64_t graphics_total() const;
uint64_t graphics_pss() const;
uint64_t gl_total() const;
uint64_t gl_pss() const;
uint64_t other_total() const;
uint64_t other_pss() const;
bool has_errors() const { return proc_ == nullptr; };
private:
MemtrackProc(const MemtrackProc&) = delete;
void operator=(const MemtrackProc&) = delete;
libmemtrack_proc* proc_ = nullptr;
};
#endif // LIBMEMTRACK_WRAPPER_H_