mirror of
https://fuchsia.googlesource.com/third_party/pigweed.googlesource.com/pigweed/pigweed
synced 2024-09-20 05:41:06 +00:00
bcf38c3a86
Moves pw_thread proto files into the pw.thread.proto package to avoid naming collisions with non-proto types provided by the module. Requires: pigweed-internal:32463 Change-Id: Ia1cc934aad31eb63e71bb1ba6967f5b2b1646eb6 Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/112115 Reviewed-by: Ewout van Bekkum <ewout@google.com> Commit-Queue: Armando Montanez <amontanez@google.com>
97 lines
3.8 KiB
Protocol Buffer
97 lines
3.8 KiB
Protocol Buffer
// Copyright 2021 The Pigweed Authors
|
|
//
|
|
// 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
|
|
//
|
|
// https://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.
|
|
syntax = "proto3";
|
|
|
|
package pw.snapshot;
|
|
|
|
option java_package = "pw.snapshot.proto";
|
|
option java_outer_classname = "Snapshot";
|
|
|
|
import "pw_chrono_protos/chrono.proto";
|
|
import "pw_cpu_exception_cortex_m_protos/cpu_state.proto";
|
|
import "pw_log/proto/log.proto";
|
|
import "pw_thread_protos/thread.proto";
|
|
import "pw_snapshot_metadata_proto/snapshot_metadata.proto";
|
|
|
|
// The Snapshot proto is a list that dictates field numbers that should
|
|
// be used when serializing proto messages into a "Snapshot" that can be
|
|
// ingested by Pigweed's upstream tooling.
|
|
//
|
|
// There are various field number ranges that are marked for "upstream" use,
|
|
// and others that are marked for "pigweed users". This allows a user to
|
|
// define a parallel proto that defines product-specific messages using mutually
|
|
// exclusive field numbers:
|
|
//
|
|
// MySnapshot {
|
|
// // Use a project-specific logging proto format.
|
|
// repeated MyLogFormat = 8;
|
|
//
|
|
// // Pigweed's snapshot doesn't support my custom RTOS, so write that to
|
|
// // a field number reserved for downstream projects.
|
|
// MyCustomRtosInfo = 22;
|
|
// }
|
|
//
|
|
// Writing both proto messages to the same proto encoder is valid because the
|
|
// field nubmers are mutually exclusive. This prevents collisions that would
|
|
// break a proto decode. The final message will have to be decoded twice; once
|
|
// as a pw.snapshot.Snapshot and once as the project-specific message.
|
|
message Snapshot {
|
|
repeated pw.log.LogEntry logs = 1;
|
|
|
|
// RESERVED FOR PIGWEED. These field numbers are reserved strictly for things
|
|
// that are very generally useful and high in count. Downstream projects may
|
|
// NOT write to these fields.
|
|
// Encodes to a single byte of tag overhead.
|
|
reserved 2 to 7;
|
|
|
|
// RESERVED FOR USERS. These field numbers should be used for writing
|
|
// project-specific proto messages that repeat in high quantity to reduce
|
|
// proto encoding overhead. Pigweed must not write to these fields.
|
|
// Encodes to a single byte of tag overhead.
|
|
reserved 8 to 15;
|
|
|
|
// Note: Proto tags 16-2047 encode with two bytes of overhead.
|
|
Metadata metadata = 16;
|
|
|
|
// Other data that should be highlighted in this crash. This field may have
|
|
// entries added to it during a decode.
|
|
map<string, string> tags = 17;
|
|
|
|
repeated pw.thread.proto.Thread threads = 18;
|
|
|
|
// If a device has multiple cores, it may be useful to collect an associated
|
|
// snapshot for attached cores when a snapshot collection is triggered on one
|
|
// core. By embedding one or more snapshots into a snapshot, the snapshots are
|
|
// considered associated.
|
|
repeated Snapshot related_snapshots = 19;
|
|
|
|
pw.cpu_exception.cortex_m.ArmV7mCpuState armv7m_cpu_state = 20;
|
|
|
|
// Platform-specific binary trace data region. Binary trace data is using
|
|
// pw_trace_tokenized buffer format for stored data.
|
|
bytes trace_data = 21;
|
|
|
|
// Timestamps that mark when this snapshot occurred. This field is repeated
|
|
// to accommodate wall-clock time, time since boot, and/or the raw system
|
|
// clock value.
|
|
repeated pw.chrono.TimePoint timestamps = 22;
|
|
|
|
// RESERVED FOR PIGWEED. Downstream projects may NOT write to these fields.
|
|
// Encodes to two bytes of tag overhead.
|
|
reserved 23 to 1031;
|
|
|
|
// RESERVED FOR USERS. Encodes to two or more bytes of tag overhead.
|
|
reserved 1032 to max;
|
|
}
|