In custom Instrument, how can I include the duration in a value

I have a custom Instrument with a os-signpost-interval-schema that captures a "state" string. I would like the final plot value to be <state>: <duration>, but I don't know how to get the duration into the string.

My working schema is the following, which just stores the state itself in the column:

    <os-signpost-interval-schema>
        <id>state-interval</id>
        <title>State Interval</title>
        <subsystem>"..."</subsystem>
        <category>"..."</category>
        <name>"state"</name>
        <start-pattern>
            <message>?state</message>
        </start-pattern>

        <column>
            <mnemonic>state</mnemonic>
            <title>State</title>
            <type>string</type>
            <expression>?state</expression>
        </column>

    </os-signpost-interval-schema>

I would like to change the expression in the column to (str-cat ?state ": " ?duration), but that fails with:

Variable '?duration' must appear in a pattern element to be used in a later expression.

I don't see any way to compute this later in the graph, lane, or plot. I've also tried explicitly creating a <duration-column>, but that doesn't seem to change anything.

The rest of the pieces include the table:

        <create-table>
            <id>state-table</id>
            <schema-ref>state-interval</schema-ref>
        </create-table>

And the lane, which I would like to display as <state>: <duration> rather than just the duration:

            <lane>
                <title>State</title>
                <table-ref>state-table</table-ref>
                <plot>
                    <value-from>state</value-from>
                </plot>
            </lane>
Answered by Developer Tools Engineer in 736469022

Thank you for the question, Rob. Unfortunately, that is not currently possible.

For start time of an interval, you could bind it to a variable using tag in the start-pattern element (https://apdreview.apple.com/instruments/developer/mac/current/#/dev1074660011), but that's currently not exposed for duration.

Workaround would be to write a custom modeler, which allows you to have full control over the values. I also encourage you to file a feedback with us so that we can make this improvement – I think it's a great idea. I could certainly see that exposing duration as a variable could be quite useful in enriching the plots developers define.

Thanks,

Kacper

Accepted Answer

Thank you for the question, Rob. Unfortunately, that is not currently possible.

For start time of an interval, you could bind it to a variable using tag in the start-pattern element (https://apdreview.apple.com/instruments/developer/mac/current/#/dev1074660011), but that's currently not exposed for duration.

Workaround would be to write a custom modeler, which allows you to have full control over the values. I also encourage you to file a feedback with us so that we can make this improvement – I think it's a great idea. I could certainly see that exposing duration as a variable could be quite useful in enriching the plots developers define.

Thanks,

Kacper

In custom Instrument, how can I include the duration in a value
 
 
Q