mosys - The more open system tool

Introduction
------------
Mosys is designed to aid in obtaining obscure system-specific information
and present it in a uniform, human-friendly manner that is also parseable. It
is intended to complement other systems software and may overlap in some areas.

Configuration & Building
------------------------

Mosys uses meson to build.  To setup the build, use:

    meson output_dir

Flags of interest:
-Dunibuild=true/false: True if the system is unibuild.

Then, to compile mosys, run:

    ninja -C output_dir

The mosys executable will be placed at `output_dir/mains/mosys`.

Usage
-----
Mosys uses a natural language syntax to navigate thru a command hierarchy for
a given platform. Each supported platform will have a specific set of commands
available.

Mosys returns EXIT_SUCCESS upon successful completion of a command, or
EXIT_FAILURE if a command is not supported on a given platform. These values
are defined in the system's stdlib.h. In case of failure, Mosys will also print
a message to stderr to let the user know.

Use "mosys -t" to display the command tree for the host platform.

Debugging
---------
Mosys uses a minijail to restrict behavior. This can sometimes restrict desired
behavior, especially system calls not whitelisted by the seccomp filter.
If a subcommand is returning with an error that should be passing, this might
be why. In order to debug this, run seccomp_debug.sh with the failing command.
This will print out the system calls that caused the run to fail.

For example, to debug `mosys ec info`, copy over `seccomp_debug.sh` to
the DUT and run:

    ./seccomp_debug.sh mosys ec info
