blob: a64768bfafa4a4ae938291babdadeaf06b059116 [file] [log] [blame]
// Copyright 2023 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@available(added=12)
library fuchsia.memory.inspection;
using zx;
/// Obtains the memory usage of a fuchsia device.
@discoverable
closed protocol Collector {
/// Writes to `socket` a JSON capture of the memory usage and the memory
/// bucket definition, as a well-formed UTF-8 string.
/// The socket is closed by the server after all the data is written into
/// it.
///
/// TODO(https://fxbug.dev/42073090): Document the schema of the JSON.
///
/// Sample output:
/// {"Capture":
/// {
/// "Time":28477260758625,
/// "Kernel":{
/// "total":1610612736,
/// "free":170565632,
/// "wired":67395584,
/// "total_heap":30904320,
/// "free_heap":1873728,
/// "vmo":1276194816,
/// "mmu":65294336,
/// "ipc":196608,
/// "other":61440
/// },
/// "Processes":[
/// ["koid","name","vmos"],
/// [47325,"fonts.cm",[47353, ...]],
/// ...
/// ],
/// "VmoNames":["scudo:primary", ...],
/// "Vmos":[
/// ["koid","name","parent_koid","committed_bytes","allocated_bytes"],
/// [47440,38,47437,4096,4096],
/// ...
/// ]
/// }
/// "Buckets":
/// [
/// {
/// "event_code": 29,
/// "name": "BlobfsInactive",
/// "process": "blobfs\\.cm",
/// "vmo": "inactive-blob-.*"
/// },
/// ...
/// ]
/// }
///
/// For size reasons:
/// - Processes and Vmos have an initial entry that contains the names of the the fields in
/// the rest of the entries.
/// - The names of the VMOs are an index into the VMONames array.
@available(deprecated=14, note="Use CollectJsonStatsWithOptions instead")
strict CollectJsonStats(resource struct {
socket zx.Handle:<SOCKET, zx.Rights.WRITE | zx.Rights.WAIT>;
});
// See |CollectJsonStats| for details.
@available(added=14)
strict CollectJsonStatsWithOptions(resource table {
// Mandatory. Socket used to return the requested statistics in JSON format.
1: socket zx.Handle:<SOCKET, zx.Rights.WRITE | zx.Rights.WAIT>;
// Optional. Also include starnix processes in the output. This may make this call much
// slower. Defaults to false.
2: include_starnix_processes bool;
});
};