blob: 4214d51ba5e856d7eee1685eb020d70a23ae27ae [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.
library fuchsia.memory.heapdump.process;
using zx;
/// Rights to map a VMO in read-only mode and read its "content size" property.
const VMO_MAP_READONLY_RIGHTS zx.Rights
= zx.RIGHTS_BASIC | zx.Rights.READ | zx.Rights.GET_PROPERTY | zx.Rights.MAP;
/// Instrumented processes send application-initiated snapshots over this channel.
///
/// This channel is also used by the server to detect when an instrumented process exits.
closed protocol SnapshotSinkV1 {
/// Asks the server to store a snapshot with the given name and the given allocations VMO.
///
/// All the resources referenced by the given allocations VMO will be resolved using the
/// resources VMO that was shared by the process at registration time.
strict StoreNamedSnapshot(resource struct {
snapshot_name string:zx.MAX_NAME_LEN;
allocations_vmo_snapshot zx.Handle:<VMO, VMO_MAP_READONLY_RIGHTS>;
});
};
/// The Registry keeps track of all the instrumented processes that are running in the system.
@discoverable
closed protocol Registry {
/// Binds the given process to the registry and share the relevant resources.
strict RegisterV1(resource struct {
process zx.Handle:<PROCESS, zx.RIGHTS_BASIC | zx.RIGHTS_IO | zx.Rights.GET_PROPERTY>;
allocations_vmo zx.Handle:<VMO, VMO_MAP_READONLY_RIGHTS>;
resources_vmo zx.Handle:<VMO, VMO_MAP_READONLY_RIGHTS>;
snapshot_sink server_end:SnapshotSinkV1;
});
};