xref: /qemu/include/qemu/plugin-memory.h (revision 727385c4)
1 /*
2  * Plugin Memory API
3  *
4  * Copyright (c) 2019 Linaro Ltd
5  *
6  * SPDX-License-Identifier: GPL-2.0-or-later
7  */
8 
9 #ifndef PLUGIN_MEMORY_H
10 #define PLUGIN_MEMORY_H
11 
12 struct qemu_plugin_hwaddr {
13     bool is_io;
14     bool is_store;
15     union {
16         struct {
17             MemoryRegionSection *section;
18             hwaddr    offset;
19         } io;
20         struct {
21             void *hostaddr;
22         } ram;
23     } v;
24 };
25 
26 /**
27  * tlb_plugin_lookup: query last TLB lookup
28  * @cpu: cpu environment
29  *
30  * This function can be used directly after a memory operation to
31  * query information about the access. It is used by the plugin
32  * infrastructure to expose more information about the address.
33  *
34  * It would only fail if not called from an instrumented memory access
35  * which would be an abuse of the API.
36  */
37 bool tlb_plugin_lookup(CPUState *cpu, target_ulong addr, int mmu_idx,
38                        bool is_store, struct qemu_plugin_hwaddr *data);
39 
40 #endif /* _PLUGIN_MEMORY_H_ */
41