[lttng-dev] CTF2-BASICATTRS-1.0: Basic CTF 2 user attributes
Philippe Proulx
pproulx at efficios.com
Tue Oct 25 18:27:03 UTC 2016
HTML version:
http://diamon.org/ctf/files/CTF2-BASICATTRS-1.0.html
Philippe Proulx
EfficiOS Inc.
http://www.efficios.com/
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
= CTF2-BASICATTRS-1.0: Basic CTF{nbsp}2 user attributes
Philippe Proulx <pproulx at efficios.com>
v1.0, 21 October 2016
:toc:
:toclevels: 5
:docid: did:CTF2-BASICATTRS-1.0
This document defines a set of basic user attributes for compatible
CTF{nbsp}2 mdt:map values, that is, the ones that accept a `user-attrs`
property.
A CTF{nbsp}2 consumer which claims to support {docid} can benefit from
additional information attached to those m-values by CTF{nbsp}2
producers which claim to apply {docid} (see <<compliance,Compliance>>).
{docid} mostly exists to define legacy CTF{nbsp}1 attributes that were
removed in did:CTF2-SPEC-2.0.
.RFC 2119
NOTE: The key words _must_, _must not_, _required_, _shall_, _shall
not_, _should_, _should not_, _recommended_, _may_, and _optional_ in
this document, when emphasized, are to be interpreted as described in
https://www.ietf.org/rfc/rfc2119.txt[RFC 2119].
[[compliance]]
== Compliance
A CTF{nbsp}2 producer is said to _apply {docid}_ if it uses the basic
user attributes <<ns,namespace>> in one or more of the `user-attrs`
properties of the metadata mdt:array values it produces.
A CTF{nbsp}2 consumer is said to _support {docid}_ if it recognizes the
basic user attributes <<ns,namespace>> and adapts its behaviour in
the presence of basic user attributes.
[[ns]]
== Namespace
The namespace under which all the basic user attributes presented here
are nested is the following mdt:string:
diamon.org/ctf/ns/basic
However, it is possible to define an alias for this specific namespace,
and for any other namespace, using the `ns-aliases`
<<trace-class-fragment-bua,trace class fragment's basic user
attribute>>.
Under this namespace (or its alias), the basic user attributes are
always nested within an mdt:map value.
.Basic user attributes namespace and metadata type
====
JSON representation:
[source,json]
{
"field-type": "int",
"user-attrs": {
"diamon.org/ctf/ns/basic": {
"...": "..."
}
},
"...": "..."
}
====
== Common basic user attributes
The following basic user attributes can be used within any CTF{nbsp}2
mdt:map which accepts a `user-attrs` property.
.Common basic user attributes mdt:map properties
[options="header"]
|===
|Name |Type |Description
|`description`
|mdt:string
|Textual description of the mdt:map (fragment, field type, etc.) in
which this user attribute is placed.
|===
[[trace-class-fragment-bua]]
== Trace class fragment's basic user attributes
.Trace class fragment's basic user attributes mdt:map properties
[options="header"]
|===
|Name |Type |Description
|`description`
|mdt:string
|Textual description of the trace class fragment.
|`supported`
|mdt:null
|This property indicates that {docid} must be considered by a consumer
when reading the various user attributes of the metadata mdt:array.
|`date`
|mdt:string
|Date on which this trace class fragment is produced.
The date's format is not specified.
|`ns-aliases`
|mdt:map with mdt:string values
|Namespace aliases.
This property defines new namespaces which are aliases of other
namespaces for the rest of the metadata mdt:array. Each key of the
mdt:map is an alias and its mdt:string value is the aliased fully
qualified namespace.
Note that the namespace of the trace class fragment's basic user
attributes cannot be aliases since this property is part of it: it must
be the fully qualified namespace, `diamon.org/ctf/ns/basic`.
|`producer-id`
|<<producer-id,Producer ID mdt:map>>
|Producer identification information.
|`sys-id`
|<<sys-id,System ID mdt:map>>
|Instrumented system identification information.
|`dist-id`
|<<dist-id,Distribution ID mdt:map>>
|Distribution identification information.
|`log-level-names`
|mdt:map with mdt:int values
|Log level name to value association.
This property assigns log level integer values to log level names.
A given log level integer value _must not_ be assigned multiple
log level names.
|===
[[producer-id]]
.Producer ID mdt:map properties
[options="header"]
|===
|Name |Type |Description |Required? |Default m-value
|`name`
|mdt:string
|Producer's name.
|Optional
|Unknown producer's name.
|`description`
|mdt:string
|Producer's description.
|Optional
|Unknown producer's description.
|`url`
|mdt:string
|Producer's URL.
|Optional
|Unknown producer's URL.
|`major`
|mdt:int
|Producer's major version number.
|Optional
|0
|`minor`
|mdt:int
|Producer's minor version number.
|Optional
|0
|`patch`
|mdt:int
|Producer's patch version number.
|Optional
|0
|`extra`
|mdt:string
|Producer's extra version number.
|Optional
|No producer's extra version number.
|===
[[sys-id]]
.System ID mdt:map properties
[options="header"]
|===
|Name |Type |Description |Required? |Default m-value
|`name`
|mdt:string
|System's name.
|Optional
|Unknown system's name.
|`node-name`
|mdt:string
|Network node hostname.
|Optional
|Unknown network node hostname.
|`release`
|mdt:string
|System's release.
|Optional
|Unknown system's release.
|`version`
|mdt:string
|System's version.
|Optional
|Unknown system's version.
|`machine`
|mdt:string
|Machine hardware name.
|Optional
|Unknown machine hardware name.
|`processor`
|mdt:string
|Processor type.
|Optional
|Unknown processor type.
|`hw-platform`
|mdt:string
|Hardware platform.
|Optional
|Unknown hardware platform.
|`os`
|mdt:string
|Operating system.
|Optional
|Unknown operating system.
|===
[[dist-id]]
.Distribution ID mdt:map properties
[options="header"]
|===
|Name |Type |Description |Required? |Default m-value
|`id`
|mdt:string
|Distributor ID.
|Optional
|Unknown distributor ID.
|`description`
|mdt:string
|Distribution's description.
|Optional
|Unknown distribution's description.
|`release`
|mdt:string
|Distribution's release number.
|Optional
|Unknown distribution's release number.
|`codename`
|mdt:string
|Distribution's code name.
|Optional
|Unknown distribution's code name.
|===
.Trace class fragment's basic user attributes
====
JSON representation:
[source,json]
{
"fragment": "trace-class",
"user-attrs": {
"diamon.org/ctf/ns/basic": {
"description": "This is a very nice trace class fragment.",
"supported": null,
"date": "Thu Oct 20 01:03:44 EDT 2016",
"ns-aliases": {
"basic": "diamon.org/ctf/ns/basic",
"myns": "9032c3c7-13f9-4d41-9758-dc3331c55bd7",
"bare": "barectf.org/ns"
},
"producer-id": {
"name": "LTTng-modules",
"description": "LTTng kernel modules are Linux kernel modules which make LTTng kernel tracing possible.",
"url": "http://lttng.org/",
"major": 2,
"minor": 8,
"patch": 3
},
"sys-id": {
"name": "Linux",
"node-name": "janinelaptop",
"release": "3.13.0-95-generic",
"version": "#142-Ubuntu SMP Fri Aug 12 17:00:09 UTC 2016",
"machine": "x86_64",
"os": "GNU/Linux"
},
"dist-id": {
"id": "Ubuntu",
"description": "Ubuntu 14.04.4 LTS",
"release": "14.04",
"codename": "trusty"
},
"log-level-names": {
"TRACE_EMERG": 0,
"TRACE_ALERT": 1,
"TRACE_CRIT": 2,
"TRACE_ERR": 3,
"TRACE_WARNING": 4,
"TRACE_NOTICE": 5,
"TRACE_INFO": 6,
"TRACE_DEBUG_SYSTEM": 7,
"TRACE_DEBUG_PROGRAM": 8,
"TRACE_DEBUG_PROCESS": 9,
"TRACE_DEBUG_MODULE": 10,
"TRACE_DEBUG_UNIT": 11,
"TRACE_DEBUG_FUNCTION": 12,
"TRACE_DEBUG_LINE": 13,
"TRACE_DEBUG": 14
}
}
},
"...": "..."
}
With the trace class fragment's basic user attributes above, the
`ns-aliases` property gives the alias `basic` to the fully qualified
namespace `diamon.org/ctf/ns/basic`. This means that `basic` (as well as
`diamon.org/ctf/ns/basic`) can be used as the namespace of the
_following_ basic user attributes. `myns` can also be used instead of
`9032c3c7-13f9-4d41-9758-dc3331c55bd7`, and `bare` can be used instead
of `barectf.org/ns`.
Also note that the `supported` property is used here. This is needed to
indicate to the consumers that this metadata mdt:array uses {docid}.
====
[[data-stream-class-fragment-bua]]
== Data stream class fragment's basic user attributes
.Data stream class fragment's basic user attributes mdt:map properties
[options="header"]
|===
|Name |Type |Description
|`description`
|mdt:string
|Textual description of the data stream class fragment.
|===
.Data stream class fragment's basic user attributes
====
JSON representation:
[source,json]
{
"fragment": "data-stream-class",
"user-attrs": {
"diamon.org/ctf/ns/basic": {
"description": "Some channel."
}
},
"...": "..."
}
====
[[event-record-class-fragment-bua]]
== Event record class fragment's basic user attributes
.Event record class fragment's basic user attributes mdt:map properties
[options="header"]
|===
|Name |Type |Description |Required? |Default m-value
|`description`
|mdt:string
|Textual description of the event record class fragment.
|Optional
|No description.
|`name`
|mdt:string
|Event record class's name or instrumentation point's name.
|Optional
|No name.
|`major`
|mdt:int
|Event record class's major version number.
|Optional
|0
|`minor`
|mdt:int
|Event record class's minor version number.
|Optional
|0
|`patch`
|mdt:int
|Event record class's patch version number.
|Optional
|0
|`extra`
|mdt:string
|Event record class's extra version number.
|Optional
|No event record class's extra version number.
|`log-level`
|mdt:int or mdt:string
|Event record class's (instrumentation point's) log level.
Any mdt:int value is valid.
If an mdt:string value is used, it must name an existing key in the
`log-level-names` property of the <<trace-class-fragment-bua,trace class
fragment's basic user attributes>> (same metadata mdt:array).
|Optional
|No log level.
|`emf-uri`
|mdt:string
|Event record class's http://www.eclipse.org/modeling/emf/[EMF] URI.
|Optional
|No EMF URI.
|===
.Event record class fragment's basic user attributes
====
JSON representation:
[source,json]
{
"fragment": "event-record-class",
"user-attrs": {
"diamon.org/ctf/ns/basic": {
"description": "My favorite event record class.",
"name": "sched_switch",
"major": 1,
"minor": 0,
"patch": 2,
"log-level": "TRACE_CRIT"
}
},
"...": "..."
}
====
[[data-stream-clock-class-fragment-bua]]
== Data stream clock class fragment's basic user attributes
.Data stream clock class fragment's basic user attributes mdt:map properties
[options="header"]
|===
|Name |Type |Description |Required? |Default m-value
|`description`
|mdt:string
|Textual description of the data stream clock class fragment.
|Optional
|No description.
|===
.Data stream clock class fragment's basic user attributes
====
JSON representation:
[source,json]
{
"fragment": "data-stream-clock-class",
"user-attrs": {
"diamon.org/ctf/ns/basic": {
"description": "Cycle counter synchronized across CPUs."
}
},
"...": "..."
}
====
[[int-field-type-bua]]
== Integer, enumeration, variable-length integer, and variable-length enumeration field type's basic user attributes
.Integer, enumeration, variable-length integer, and variable-length enumeration field type's basic user attributes mdt:map properties
[options="header"]
|===
|Name |Type |Description |Required? |Default m-value
|`description`
|mdt:string
|Textual description of the integer field type class fragment.
|Optional
|No description.
|`display-radix`
|mdt:int
|Radix to prefer using when displaying the value of a field decoded
using this integer field type.
Valid m-values are: 2, 8, 10, and 16.
|Optional
|10
|===
.Integer field type's basic user attributes
====
JSON representation:
[source,json]
{
"field-type": "int",
"user-attrs": {
"diamon.org/ctf/ns/basic": {
"description": "What an int!",
"display-radix": 16
}
},
"...": "..."
}
====
More information about the lttng-dev
mailing list