Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,12 @@ jobs:

- name: Create PTIX
run: |
$dirs = @{
# LTTngDriver is a command-line tool, not a WPA plugin: it ships the SDK and engine, so it can't be packed (its
# build output also carries the LTTng plugin's manifest). Its files are published by the next step.
$dirs = [ordered]@{
"PerfDataExtension" = "PerfDataExtension/bin/Release/netstandard2.1/"
"PerfDataTxtExtension" = "PerfDataTxtExtension/bin/Release/netstandard2.1/"
"LTTngDataExtensions" = "LTTngDataExtensions/bin/Release/netstandard2.1/"
"LTTngDriver" = "LTTngDriver/bin/Release/net8.0/"
"Perfetto" = "PerfettoCds/bin/Release/netstandard2.1/"
"Cloud-init" = "LinuxLogParsers/LinuxPlugins-MicrosoftPerformanceToolkSDK/Cloud-init/bin/Release/netstandard2.1/"
"Dmesg" = "LinuxLogParsers/LinuxPlugins-MicrosoftPerformanceToolkSDK/DmesgIsoLog/bin/Release/netstandard2.1/"
Expand All @@ -73,7 +74,7 @@ jobs:
$pluginManifestPath = "$sourcePath/pluginManifest.json"

if (!(Test-Path $pluginManifestPath)) {
Write-Error "pluginManifest.json not found in $sourcePath"
throw "pluginManifest.json not found in $sourcePath"
}

$pluginManifest = Get-Content -Path $pluginManifestPath | ConvertFrom-Json
Expand All @@ -83,6 +84,11 @@ jobs:
$packageName = "$pluginId-$pluginVersion.ptix"

plugintool pack -s $sourcePath -o "$targetPath/$packageName"

# Only the last command's exit code would otherwise decide the step's result.
if ($LASTEXITCODE -ne 0) {
throw "plugintool pack failed for $plugin (exit code $LASTEXITCODE)"
}
}

- name: Copy files and prepare artifacts
Expand Down
9 changes: 5 additions & 4 deletions CtfPlayback/EventStreams/CtfEvent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using System.Diagnostics;
using CtfPlayback.EventStreams.Interfaces;
using CtfPlayback.FieldValues;
using CtfPlayback.Metadata;
using CtfPlayback.Metadata.Interfaces;

namespace CtfPlayback.EventStreams
Expand All @@ -25,6 +26,8 @@ public CtfEvent(PacketReader packetReader, ICtfMetadata metadata, ICtfPacket own

public ulong ByteOffsetWithinPacket { get; private set; }

public uint StreamId => this.owningPacket.StreamId;

public CtfTimestamp Timestamp { get; private set; }

public CtfFieldValue StreamDefinedEventHeader { get; private set; }
Expand Down Expand Up @@ -102,17 +105,15 @@ public void Read()

private void ReadStreamEventHeader()
{
uint streamIndex = this.owningPacket.StreamId;
var eventHeaderDescriptor = this.packetReader.Metadata.Streams[(int)streamIndex].EventHeader;
var eventHeaderDescriptor = this.packetReader.Metadata.GetStream(this.owningPacket.StreamId).EventHeader;
Debug.Assert(eventHeaderDescriptor != null);

StreamDefinedEventHeader = eventHeaderDescriptor.Read(this.packetReader);
}

private void ReadStreamEventContext()
{
uint streamIndex = this.owningPacket.StreamId;
var eventContextDescriptor = this.packetReader.Metadata.Streams[(int)streamIndex].EventContext;
var eventContextDescriptor = this.packetReader.Metadata.GetStream(this.owningPacket.StreamId).EventContext;
if (eventContextDescriptor == null)
{
return;
Expand Down
8 changes: 6 additions & 2 deletions CtfPlayback/EventStreams/CtfPacket.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using System.IO;
using CtfPlayback.EventStreams.Interfaces;
using CtfPlayback.FieldValues;
using CtfPlayback.Metadata;
using CtfPlayback.Metadata.Interfaces;

namespace CtfPlayback.EventStreams
Expand Down Expand Up @@ -61,10 +62,12 @@ public bool ReadPacketMetadata()
this.PacketByteOffset = this.packetReader.CountOfBytesProcessed;

ReadPacketHeader();
ReadPacketContext();

// The packet context layout depends on the stream, which is identified in the packet header.
this.DetermineStreamIndex();

ReadPacketContext();
Comment thread
Nemati marked this conversation as resolved.

this.packetReader.SetPacketSize(this.packetReader.PlaybackCustomization.GetBitsInPacket(this));

this.BitsInPacketContent =
Expand Down Expand Up @@ -116,7 +119,7 @@ private void ReadPacketHeader()

private void ReadPacketContext()
{
this.StreamPacketContext = this.Metadata.Streams[(int)this.StreamId].PacketContext.Read(this.packetReader) as CtfStructValue;
this.StreamPacketContext = this.Metadata.GetStream(this.StreamId).PacketContext.Read(this.packetReader) as CtfStructValue;
}

private ulong GetRemainingBits()
Expand All @@ -135,6 +138,7 @@ private void DetermineStreamIndex()
if (streamIdDescriptor == null)
{
this.StreamId = 0;
return;
}

bool streamIdFound = this.TracePacketHeader.FieldsByName.TryGetValue("stream_id", out var streamIdFieldValue);
Expand Down
5 changes: 5 additions & 0 deletions CtfPlayback/EventStreams/Interfaces/ICtfEvent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ public interface ICtfEvent
/// </summary>
ulong ByteOffsetWithinPacket { get; }

/// <summary>
/// Id of the stream (stream class) that contains this event.
/// </summary>
uint StreamId { get; }

/// <summary>
/// Timestamp associated with the event
/// </summary>
Expand Down
12 changes: 11 additions & 1 deletion CtfPlayback/Metadata/AntlrParser/CtfAntlrMetadataParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,16 @@ public ICtfMetadata Parse(Stream metadataStream)
{
string metadata = this.GetMetadata(metadataStream);

return this.ParseText(metadata);
}

/// <summary>
/// Parse CTF metadata text that is not packetized.
/// </summary>
/// <param name="metadata">Metadata text</param>
/// <returns>Metadata parsed from the text</returns>
internal ICtfMetadata ParseText(string metadata)
{
this.parser = GetContext(metadata);

// Error listeners can be switched out for debugging purposes. Leaving these comments here for easy access.
Expand All @@ -69,7 +79,7 @@ public ICtfMetadata Parse(Stream metadataStream)
/// <returns>String representation of the metadata</returns>
private unsafe string GetMetadata(Stream metadataStream)
{
// See https://diamon.org/ctf/#spec7.1
// See https://diamon.org/ctf/v1.8.3/#spec7.1

byte[] headerBuffer = new byte[Marshal.SizeOf(typeof(MetadataPacketHeader))];
byte[] buffer = null;
Expand Down
Loading
Loading