-
Notifications
You must be signed in to change notification settings - Fork 42
FAQ
The string format to print out DAGs is documented at Human readable XIP address format. From that page, one reads the following: The prefix "!" indicates that the address is invalid. Any index greater than 35 (i.e. 'z') is represented by '+', and an empty edge by '*'.
The function that tests if an address is valid or not checks many things as one can verify in the source code, for example, that the DAG is a single component, that there is no edge after an empty edge, the DAG is in topological order, etc.
This function assumes that addresses come from userland, so they cannot have chosen edges, and that is the reason most destination addresses in packets on a wire will be invalid. One may want to have a special version of this function for Wireshark, but nobody has worked on it yet.
Once an address is deemed invalid, all edges are printed out, including empty edges, in order to help with debugging cases like "-2**9", that is, an edge after an empty edge.
This question can arise when considering addresses like the following:
u4id-0a024702c3d70000000000000000000000000000-21: zf-0110000000000000000000000000000000000000-2: xdp-007f4e38904e83634acc7e1340ef7665e3f1f57b-210
It appears as if the edges coming out of the last node of the DAG (the XDP) are directed toward the previous nodes, such as 0 (the U4ID), 1 (the zF), or 2 (the XDP itself). However, the last node of the DAG is a sink, meaning that it does not have any outgoing edges. The edges of the sink represent the edges of entry node.
This example can be found on the page An exemplifying demo, which includes a image of the DAG that may help you to understand what the textual representation above is trying to show. More information about the address grammar can be found on the page Human readable XIP address format.
All grants that have generously supported the development of Linux XIA are listed on our Funding page.