xref: /openbmc/qemu/plugins/api-user.c (revision 6d1829fce4ea50d343f2df63eeff96685a359bf5)
1455a2d26SAlex Bennée /*
2455a2d26SAlex Bennée  * QEMU Plugin API - user-mode only implementations
3455a2d26SAlex Bennée  *
4455a2d26SAlex Bennée  * This provides the APIs that have a user-mode specific
5455a2d26SAlex Bennée  * implementations or are only relevant to user-mode.
6455a2d26SAlex Bennée  *
7455a2d26SAlex Bennée  * Copyright (C) 2017, Emilio G. Cota <cota@braap.org>
8455a2d26SAlex Bennée  * Copyright (C) 2019-2025, Linaro
9455a2d26SAlex Bennée  *
10455a2d26SAlex Bennée  * SPDX-License-Identifier: GPL-2.0-or-later
11455a2d26SAlex Bennée  */
12455a2d26SAlex Bennée 
13455a2d26SAlex Bennée #include "qemu/osdep.h"
14455a2d26SAlex Bennée #include "qemu/plugin.h"
15*1d3e745fSAlex Bennée #include "exec/log.h"
16455a2d26SAlex Bennée 
17455a2d26SAlex Bennée /*
18455a2d26SAlex Bennée  * Virtual Memory queries - these are all NOPs for user-mode which
19455a2d26SAlex Bennée  * only ever has visibility of virtual addresses.
20455a2d26SAlex Bennée  */
21455a2d26SAlex Bennée 
qemu_plugin_get_hwaddr(qemu_plugin_meminfo_t info,uint64_t vaddr)22455a2d26SAlex Bennée struct qemu_plugin_hwaddr *qemu_plugin_get_hwaddr(qemu_plugin_meminfo_t info,
23455a2d26SAlex Bennée                                                   uint64_t vaddr)
24455a2d26SAlex Bennée {
25455a2d26SAlex Bennée     return NULL;
26455a2d26SAlex Bennée }
27455a2d26SAlex Bennée 
qemu_plugin_hwaddr_is_io(const struct qemu_plugin_hwaddr * haddr)28455a2d26SAlex Bennée bool qemu_plugin_hwaddr_is_io(const struct qemu_plugin_hwaddr *haddr)
29455a2d26SAlex Bennée {
30455a2d26SAlex Bennée     return false;
31455a2d26SAlex Bennée }
32455a2d26SAlex Bennée 
qemu_plugin_hwaddr_phys_addr(const struct qemu_plugin_hwaddr * haddr)33455a2d26SAlex Bennée uint64_t qemu_plugin_hwaddr_phys_addr(const struct qemu_plugin_hwaddr *haddr)
34455a2d26SAlex Bennée {
35455a2d26SAlex Bennée     return 0;
36455a2d26SAlex Bennée }
37455a2d26SAlex Bennée 
qemu_plugin_hwaddr_device_name(const struct qemu_plugin_hwaddr * h)38455a2d26SAlex Bennée const char *qemu_plugin_hwaddr_device_name(const struct qemu_plugin_hwaddr *h)
39455a2d26SAlex Bennée {
40455a2d26SAlex Bennée     return g_intern_static_string("Invalid");
41455a2d26SAlex Bennée }
42*1d3e745fSAlex Bennée 
43*1d3e745fSAlex Bennée /*
44*1d3e745fSAlex Bennée  * Time control - for user mode the only real time is wall clock time
45*1d3e745fSAlex Bennée  * so realistically all you can do in user mode is slow down execution
46*1d3e745fSAlex Bennée  * which doesn't require the ability to mess with the clock.
47*1d3e745fSAlex Bennée  */
48*1d3e745fSAlex Bennée 
qemu_plugin_request_time_control(void)49*1d3e745fSAlex Bennée const void *qemu_plugin_request_time_control(void)
50*1d3e745fSAlex Bennée {
51*1d3e745fSAlex Bennée     return NULL;
52*1d3e745fSAlex Bennée }
53*1d3e745fSAlex Bennée 
qemu_plugin_update_ns(const void * handle,int64_t new_time)54*1d3e745fSAlex Bennée void qemu_plugin_update_ns(const void *handle, int64_t new_time)
55*1d3e745fSAlex Bennée {
56*1d3e745fSAlex Bennée     qemu_log_mask(LOG_UNIMP, "user-mode can't control time");
57*1d3e745fSAlex Bennée }
58