blob: 2c75594be78aaaaddf02dd488358ca2fa0060cf8 [file] [log] [blame] [view]
# Bitfield diagram explanation
This document explains how to read the bitfield diagrams used in the
[logs][log_format] and [inspect][inspect_format] formats.
The following example bitfield diagram is broken down into its component parts:
```
.---------------------------------------------------------------.
| |1|1|1|1|1|2|2|2|2|2|3|3|3|3|3|4|4|4|4|4|5|5|5|5|5|6|6|
|0|2|4|6|8|0|2|4|6|8|0|2|4|6|8|0|2|4|6|8|0|2|4|6|8|0|2|4|6|8|0|2|
|---+---+-------+-----------------------+-----------------------|
| O | R | Type | Parent index | Name index |
|---------------------------------------------------------------|
| Reference count (optional) |
'---------------------------------------------------------------'
O = Order
R = Reserved, must be 0
Type = {3,10}
```
## Top row
In the top row, each column denotes the starting bit index, and each
space corresponds to two consecutive bits.
For example, the first "0" in the left-most column denotes that the
space is reserved for the bits at index 0 and 1. The next "2" at index
2 and 3, and so on. The first column with two numbers should be read as
"10", the next "12", and so on.
```
.---------------------------------------------------------------.
| |1|1|1|1|1|2|2|2|2|2|3|3|3|3|3|4|4|4|4|4|5|5|5|5|5|6|6|
|0|2|4|6|8|0|2|4|6|8|0|2|4|6|8|0|2|4|6|8|0|2|4|6|8|0|2|4|6|8|0|2|
|---+-----------+-----------------------------------------------|
```
## Bottom rows
The bottom rows of the diagram illustrate the physical layout of the fields. Each row consists of
64 bits.
```
|---+---+-------+-----------------------+-----------------------|
| O | R | Type | Parent index | Name index |
|---------------------------------------------------------------|
| Reference count (optional) |
'---------------------------------------------------------------'
```
In the example, we are representing 128 bits. The first 64 bits contain:
- `O`: 4 bits at indexes `[0, 4)` (left inclusive, right exclusive, so in this
case the indexes `{0, 1, 2, 3}`).
- `R`: 4 bits at indexes `[4, 8)`
- `Type`: 8 bits at indexes `[8, 16)`
- `Parent index`: 24 bits at indexes `[16, 40)`
- `Name index`: 24 bits at indexes `[40, 64)`
The second 64 bits contain a single value, the `Reference count`.
## Notes
At the end of the diagram, there is a legend to make it clearer what some fields mean or what
restrictions they might have. In the example above, `R` means `Reserved` and `O` means `Order` but
there wasnt enough space in the diagram to fit those words. `Type` will only contain values in the
set `{3, 10}`.
[inspect_format]: /docs/reference/platform-spec/diagnostics/inspect-vmo-format.md
[log_format]: /docs/reference/platform-spec/diagnostics/logs-encoding.md