STM master is an executable that must be launched before any clients can return from a call to stmClientInit() and stmScheduleManagerInit(). The master executable gets passed the *.stm files produced by the compiler as mandatory command line arguments. It parses these files and creates internal schedule representation for each unique schedule ID. It then creates communication channels between the master process and the client processes for all the schedules. After all the clients yield to the scheduler by calling stmEnterScheduler(), the master process only becomes active when it receives a request to start/stop execution of a schedule. Only one schedule is allowed to execute at a time. NOTE: Multiple schedule files passed as arguments to the STM Master must have unique Schedule Identifiers, otherwise STM will exit with an error.
The following are the flags which can be passed to stm_master:
Variable | Flag | Description |
---|---|---|
schedule | -s | Path to .stm schedule Files. Multiple Files are only provided if schedule manager is set, else single file should be provided. |
schedulemanagername | -N | Name of the schedule manage which will connect to stm master |
num-inputschedule | -i | Number of input schedule provided. This argument should be used if schedule manager is set |
log | -l | Path to which the (binary) log file will be output. No log is generated otherwise. |
masterforked-logpath | -L | Path to which any log files from master-forked processes (i.e. framesync and deadlock resolvers)will be outputted |
soc | -x | The name of the SOC on which this stm_master is running (Must match SOC fields in yaml) |
log-freq | -f | Number of times (per second) log should be written to (default 30/s) |
timeout-us | -t | NvSciSync fence wait timeout in us (-1 for infinite timeout; default 5000000 us timeout) |
verbose | -v | Print verbose debug information. Note that this mode affects latency guarantees and should only be used when debugging. |
no-skip-onoverrun | -m | Sets policy to not wait for next period trigger on overruns. |
select-ptp-clk | -k | Selects which clock source to get timestamps from, during printing debug information. |
epochs | -e | Number of hyperepochs for which to run schedule |
core | -c | Index of CPU core on which to pin stm_master |
discriminator | -D | Specify a discriminator if running multiple STM instances on a single machine. All clients connecting to a particular instance should have the same discriminator as specified in its corresponding Master. |
blocking-logging | -b | Block when logging buffer is full. Default is to drop events until buffer space is available |
enable-memlock | -M | Page lock all client process memory. Default is false. |
disable-cpu-affinity | -C | Disables pinning of STM threads to scheduled cores. |
thread-priority | -P | Sets thread priority for thread pools created. Max priority: 0, Min priority: 98, Default: 1 |
Help | -h | Print help text |
version | -V | Print STM version and exit |