| // Copyright 2021 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.diagnostics.types; |
| |
| using zx; |
| |
| // Task associated with a running component. |
| resource flexible union Task { |
| 1: zx.handle:JOB job; |
| 2: zx.handle:PROCESS process; |
| 3: zx.handle:THREAD thread; |
| }; |
| |
| // Contains handles for tasks of the running component. This is emitted by |
| // runners and handled by component manager to obtain information about the |
| // process and record diagnostics. |
| resource table ComponentTasks { |
| // The Zircon task for the running component. |
| // Resource usage for the component is attributed to this task. |
| 1: Task component_task; |
| |
| // The container task running the component. |
| // This field is set to the task that runs `component_task`. For |
| // example, if `component_task` is run a part of a Virtual Machine, |
| // this task is set so that resources attributed to the parent can be |
| // subdivided between their children. |
| // |
| // This field is used only when a portion of the `component_task`'s resource |
| // usage is shared with another component. If `component_task` owns exactly |
| // only those resources used by the component, `parent_task` must be left |
| // unset. |
| 2: Task parent_task; |
| }; |
| |
| // Diagnostics information about a component provided by the runner. |
| resource table ComponentDiagnostics { |
| // Tasks associated with the running component. |
| 1: ComponentTasks tasks; |
| }; |