blob: 894a0bcadf3969896402dc5fb8ae5bd2cd530f80 [file] [log] [blame] [view] [edit]
---
title: The 'm5-exit-repeat' binary
layout: default
permalink: resources/m5-exit-repeat
shortdoc: >
Source for 'm5-exit-repeat'. A 'm5-exit-repeat' binary runs the `m5_exit(0)` command in an infinite loop. This is useful for testing exit event handlers.
author: ["Bobby R. Bruce"]
---
This 'm5-exit-repeat' resource runs the `m5_exit` function in an infinite loop.
This resource is deliberately kept simple and is used primarily for testing purposes.
## Building Instructions
Run `make`.
**Note:** This will automatically clone the gem5 repository to the `src/m5-exit-repeat` directory.
If this is not desired, please ensure the gem5 repository is present in this directory before running make.
This will only compile the binary to the X86 ISA.
## Cleaning Instructions
Run `make clean` in the Makefile directory.
## Usage
As this binary utilizes the `m5_exit` function, it should be run within a gem5 simulation.
Its purpose is to test exit events handler and other situations where it's desirable for a simulation to continually run an `m5_exit` command.
It should be run in SE Mode.
### Example
The following code snippet utilizes the standard library:
```py
board.set_se_workload(Resource("x86-m5-exit-repeat"))
def unique_exit_event():
print("Handling the first exit event.")
yield False
print("Handling the second exit event.")
yield False
print("Handling the third exit event. We'll exit now.")
yield True
simulator = Simulator(
board = board,
on_exit_event = {
ExitEvent.Exit : unique_exit_event(),
},
)
```
This will handle the exit event three times.
## Pre-built binaries
Compiled to the X86 ISA: http://dist.gem5.org/dist/develop/test-progs/m5-exit-repeat/x86-m5-exit-repeat-20220825
## License
This code is covered by By the [03-Clause BSD License (BSD-3-Clause)](https://opensource.org/licenses/BSD-3-Clause).