qemu/plugins/api-user.c
<<
>>
Prefs
   1/*
   2 * QEMU Plugin API - user-mode only implementations
   3 *
   4 * This provides the APIs that have a user-mode specific
   5 * implementations or are only relevant to user-mode.
   6 *
   7 * Copyright (C) 2017, Emilio G. Cota <cota@braap.org>
   8 * Copyright (C) 2019-2025, Linaro
   9 *
  10 * SPDX-License-Identifier: GPL-2.0-or-later
  11 */
  12
  13#include "qemu/osdep.h"
  14#include "qemu/plugin.h"
  15#include "exec/log.h"
  16
  17/*
  18 * Virtual Memory queries - these are all NOPs for user-mode which
  19 * only ever has visibility of virtual addresses.
  20 */
  21
  22struct qemu_plugin_hwaddr *qemu_plugin_get_hwaddr(qemu_plugin_meminfo_t info,
  23                                                  uint64_t vaddr)
  24{
  25    return NULL;
  26}
  27
  28bool qemu_plugin_hwaddr_is_io(const struct qemu_plugin_hwaddr *haddr)
  29{
  30    return false;
  31}
  32
  33uint64_t qemu_plugin_hwaddr_phys_addr(const struct qemu_plugin_hwaddr *haddr)
  34{
  35    return 0;
  36}
  37
  38const char *qemu_plugin_hwaddr_device_name(const struct qemu_plugin_hwaddr *h)
  39{
  40    return g_intern_static_string("Invalid");
  41}
  42
  43/*
  44 * Time control - for user mode the only real time is wall clock time
  45 * so realistically all you can do in user mode is slow down execution
  46 * which doesn't require the ability to mess with the clock.
  47 */
  48
  49const void *qemu_plugin_request_time_control(void)
  50{
  51    return NULL;
  52}
  53
  54void qemu_plugin_update_ns(const void *handle, int64_t new_time)
  55{
  56    qemu_log_mask(LOG_UNIMP, "user-mode can't control time");
  57}
  58