Signed-off-by: Alexander Oleinik <alx...@bu.edu> --- accel/fuzz.c | 47 +++++++++++++++++++++++++++++++++++++++++++ include/sysemu/fuzz.h | 15 ++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 accel/fuzz.c create mode 100644 include/sysemu/fuzz.h
diff --git a/accel/fuzz.c b/accel/fuzz.c new file mode 100644 index 0000000000..1694cf46e8 --- /dev/null +++ b/accel/fuzz.c @@ -0,0 +1,47 @@ +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "qemu/module.h" +#include "qemu/option.h" +#include "qemu/config-file.h" +#include "sysemu/accel.h" +#include "sysemu/fuzz.h" +#include "sysemu/cpus.h" + + +static void fuzz_setup_post(MachineState *ms, AccelState *accel) { +} + +static int fuzz_init_accel(MachineState *ms) +{ + QemuOpts *opts = qemu_opts_create(qemu_find_opts("icount"), NULL, 0, + &error_abort); + qemu_opt_set(opts, "shift", "0", &error_abort); + configure_icount(opts, &error_abort); + qemu_opts_del(opts); + return 0; +} + +static void fuzz_accel_class_init(ObjectClass *oc, void *data) +{ + AccelClass *ac = ACCEL_CLASS(oc); + ac->name = "fuzz"; + ac->init_machine = fuzz_init_accel; + ac->setup_post = fuzz_setup_post; + ac->allowed = &fuzz_allowed; +} + +#define TYPE_FUZZ_ACCEL ACCEL_CLASS_NAME("fuzz") + +static const TypeInfo fuzz_accel_type = { + .name = TYPE_FUZZ_ACCEL, + .parent = TYPE_ACCEL, + .class_init = fuzz_accel_class_init, +}; + +static void fuzz_type_init(void) +{ + type_register_static(&fuzz_accel_type); +} + +type_init(fuzz_type_init); + diff --git a/include/sysemu/fuzz.h b/include/sysemu/fuzz.h new file mode 100644 index 0000000000..09a2a9ffdf --- /dev/null +++ b/include/sysemu/fuzz.h @@ -0,0 +1,15 @@ +#ifndef FUZZ_H +#define FUZZ_H + +bool fuzz_allowed; + +static inline bool fuzz_enabled(void) +{ + return fuzz_allowed; +} + +bool fuzz_driver(void); + +void fuzz_init(const char *fuzz_chrdev, const char *fuzz_log, Error **errp); + +#endif -- 2.20.1