qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Subject: [PULL 72/87] memory: include MemoryListener documentation and some missing function parameters
Date: Wed, 18 Dec 2019 13:02:38 +0100	[thread overview]
Message-ID: <1576670573-48048-73-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1576670573-48048-1-git-send-email-pbonzini@redhat.com>

These cover the remaining warnings from kernel-doc.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20191029162248.13383-7-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 include/exec/memory.h | 218 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 214 insertions(+), 4 deletions(-)

diff --git a/include/exec/memory.h b/include/exec/memory.h
index 4754749..e85b7de 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -423,30 +423,232 @@ struct IOMMUMemoryRegion {
  * Use with memory_listener_register() and memory_listener_unregister().
  */
 struct MemoryListener {
+    /**
+     * @begin:
+     *
+     * Called at the beginning of an address space update transaction.
+     * Followed by calls to #MemoryListener.region_add(),
+     * #MemoryListener.region_del(), #MemoryListener.region_nop(),
+     * #MemoryListener.log_start() and #MemoryListener.log_stop() in
+     * increasing address order.
+     *
+     * @listener: The #MemoryListener.
+     */
     void (*begin)(MemoryListener *listener);
+
+    /**
+     * @commit:
+     *
+     * Called at the end of an address space update transaction,
+     * after the last call to #MemoryListener.region_add(),
+     * #MemoryListener.region_del() or #MemoryListener.region_nop(),
+     * #MemoryListener.log_start() and #MemoryListener.log_stop().
+     *
+     * @listener: The #MemoryListener.
+     */
     void (*commit)(MemoryListener *listener);
+
+    /**
+     * @region_add:
+     *
+     * Called during an address space update transaction,
+     * for a section of the address space that is new in this address space
+     * space since the last transaction.
+     *
+     * @listener: The #MemoryListener.
+     * @section: The new #MemoryRegionSection.
+     */
     void (*region_add)(MemoryListener *listener, MemoryRegionSection *section);
+
+    /**
+     * @region_del:
+     *
+     * Called during an address space update transaction,
+     * for a section of the address space that has disappeared in the address
+     * space since the last transaction.
+     *
+     * @listener: The #MemoryListener.
+     * @section: The old #MemoryRegionSection.
+     */
     void (*region_del)(MemoryListener *listener, MemoryRegionSection *section);
+
+    /**
+     * @region_nop:
+     *
+     * Called during an address space update transaction,
+     * for a section of the address space that is in the same place in the address
+     * space as in the last transaction.
+     *
+     * @listener: The #MemoryListener.
+     * @section: The #MemoryRegionSection.
+     */
     void (*region_nop)(MemoryListener *listener, MemoryRegionSection *section);
+
+    /**
+     * @log_start:
+     *
+     * Called during an address space update transaction, after
+     * one of #MemoryListener.region_add(),#MemoryListener.region_del() or
+     * #MemoryListener.region_nop(), if dirty memory logging clients have
+     * become active since the last transaction.
+     *
+     * @listener: The #MemoryListener.
+     * @section: The #MemoryRegionSection.
+     * @old: A bitmap of dirty memory logging clients that were active in
+     * the previous transaction.
+     * @new: A bitmap of dirty memory logging clients that are active in
+     * the current transaction.
+     */
     void (*log_start)(MemoryListener *listener, MemoryRegionSection *section,
                       int old, int new);
+
+    /**
+     * @log_stop:
+     *
+     * Called during an address space update transaction, after
+     * one of #MemoryListener.region_add(), #MemoryListener.region_del() or
+     * #MemoryListener.region_nop() and possibly after
+     * #MemoryListener.log_start(), if dirty memory logging clients have
+     * become inactive since the last transaction.
+     *
+     * @listener: The #MemoryListener.
+     * @section: The #MemoryRegionSection.
+     * @old: A bitmap of dirty memory logging clients that were active in
+     * the previous transaction.
+     * @new: A bitmap of dirty memory logging clients that are active in
+     * the current transaction.
+     */
     void (*log_stop)(MemoryListener *listener, MemoryRegionSection *section,
                      int old, int new);
+
+    /**
+     * @log_sync:
+     *
+     * Called by memory_region_snapshot_and_clear_dirty() and
+     * memory_global_dirty_log_sync(), before accessing QEMU's "official"
+     * copy of the dirty memory bitmap for a #MemoryRegionSection.
+     *
+     * @listener: The #MemoryListener.
+     * @section: The #MemoryRegionSection.
+     */
     void (*log_sync)(MemoryListener *listener, MemoryRegionSection *section);
+
+    /**
+     * @log_clear:
+     *
+     * Called before reading the dirty memory bitmap for a
+     * #MemoryRegionSection.
+     *
+     * @listener: The #MemoryListener.
+     * @section: The #MemoryRegionSection.
+     */
     void (*log_clear)(MemoryListener *listener, MemoryRegionSection *section);
+
+    /**
+     * @log_global_start:
+     *
+     * Called by memory_global_dirty_log_start(), which
+     * enables the %DIRTY_LOG_MIGRATION client on all memory regions in
+     * the address space.  #MemoryListener.log_global_start() is also
+     * called when a #MemoryListener is added, if global dirty logging is
+     * active at that time.
+     *
+     * @listener: The #MemoryListener.
+     */
     void (*log_global_start)(MemoryListener *listener);
+
+    /**
+     * @log_global_stop:
+     *
+     * Called by memory_global_dirty_log_stop(), which
+     * disables the %DIRTY_LOG_MIGRATION client on all memory regions in
+     * the address space.
+     *
+     * @listener: The #MemoryListener.
+     */
     void (*log_global_stop)(MemoryListener *listener);
+
+    /**
+     * @log_global_after_sync:
+     *
+     * Called after reading the dirty memory bitmap
+     * for any #MemoryRegionSection.
+     *
+     * @listener: The #MemoryListener.
+     */
     void (*log_global_after_sync)(MemoryListener *listener);
+
+    /**
+     * @eventfd_add:
+     *
+     * Called during an address space update transaction,
+     * for a section of the address space that has had a new ioeventfd
+     * registration since the last transaction.
+     *
+     * @listener: The #MemoryListener.
+     * @section: The new #MemoryRegionSection.
+     * @match_data: The @match_data parameter for the new ioeventfd.
+     * @data: The @data parameter for the new ioeventfd.
+     * @e: The #EventNotifier parameter for the new ioeventfd.
+     */
     void (*eventfd_add)(MemoryListener *listener, MemoryRegionSection *section,
                         bool match_data, uint64_t data, EventNotifier *e);
+
+    /**
+     * @eventfd_del:
+     *
+     * Called during an address space update transaction,
+     * for a section of the address space that has dropped an ioeventfd
+     * registration since the last transaction.
+     *
+     * @listener: The #MemoryListener.
+     * @section: The new #MemoryRegionSection.
+     * @match_data: The @match_data parameter for the dropped ioeventfd.
+     * @data: The @data parameter for the dropped ioeventfd.
+     * @e: The #EventNotifier parameter for the dropped ioeventfd.
+     */
     void (*eventfd_del)(MemoryListener *listener, MemoryRegionSection *section,
                         bool match_data, uint64_t data, EventNotifier *e);
+
+    /**
+     * @coalesced_io_add:
+     *
+     * Called during an address space update transaction,
+     * for a section of the address space that has had a new coalesced
+     * MMIO range registration since the last transaction.
+     *
+     * @listener: The #MemoryListener.
+     * @section: The new #MemoryRegionSection.
+     * @addr: The starting address for the coalesced MMIO range.
+     * @len: The length of the coalesced MMIO range.
+     */
     void (*coalesced_io_add)(MemoryListener *listener, MemoryRegionSection *section,
                                hwaddr addr, hwaddr len);
+
+    /**
+     * @coalesced_io_del:
+     *
+     * Called during an address space update transaction,
+     * for a section of the address space that has dropped a coalesced
+     * MMIO range since the last transaction.
+     *
+     * @listener: The #MemoryListener.
+     * @section: The new #MemoryRegionSection.
+     * @addr: The starting address for the coalesced MMIO range.
+     * @len: The length of the coalesced MMIO range.
+     */
     void (*coalesced_io_del)(MemoryListener *listener, MemoryRegionSection *section,
                                hwaddr addr, hwaddr len);
-    /* Lower = earlier (during add), later (during del) */
+    /**
+     * @priority:
+     *
+     * Govern the order in which memory listeners are invoked. Lower priorities
+     * are invoked earlier for "add" or "start" callbacks, and later for "delete"
+     * or "stop" callbacks.
+     */
     unsigned priority;
+
+    /* private: */
     AddressSpace *address_space;
     QTAILQ_ENTRY(MemoryListener) link;
     QTAILQ_ENTRY(MemoryListener) link_as;
@@ -940,6 +1142,7 @@ void memory_region_init_rom(MemoryRegion *mr,
  * @mr: the #MemoryRegion to be initialized.
  * @owner: the object that tracks the region's reference count
  * @ops: callbacks for write access handling (must not be NULL).
+ * @opaque: passed to the read and write callbacks of the @ops structure.
  * @name: Region name, becomes part of RAMBlock name used in migration stream
  *        must be unique within any device
  * @size: size of the region.
@@ -1028,7 +1231,7 @@ static inline IOMMUMemoryRegion *memory_region_get_iommu(MemoryRegion *mr)
  * Returns pointer to IOMMUMemoryRegionClass if a memory region is an iommu,
  * otherwise NULL. This is fast path avoiding QOM checking, use with caution.
  *
- * @mr: the memory region being queried
+ * @iommu_mr: the memory region being queried
  */
 static inline IOMMUMemoryRegionClass *memory_region_get_iommu_class_nocheck(
         IOMMUMemoryRegion *iommu_mr)
@@ -1098,6 +1301,7 @@ void memory_region_notify_one(IOMMUNotifier *notifier,
  * @n: the IOMMUNotifier to be added; the notify callback receives a
  *     pointer to an #IOMMUTLBEntry as the opaque value; the pointer
  *     ceases to be valid on exit from the notifier.
+ * @errp: pointer to Error*, to store an error if it happens.
  */
 int memory_region_register_iommu_notifier(MemoryRegion *mr,
                                           IOMMUNotifier *n, Error **errp);
@@ -1270,9 +1474,12 @@ void *memory_region_get_ram_ptr(MemoryRegion *mr);
 void memory_region_ram_resize(MemoryRegion *mr, ram_addr_t newsize,
                               Error **errp);
 /**
- * memory_region_do_writeback: Trigger writeback for selected address range
- * [addr, addr + size]
+ * memory_region_do_writeback: Trigger cache writeback or msync for
+ * selected address range
  *
+ * @mr: the memory region to be updated
+ * @addr: the initial address of the range to be written back
+ * @size: the size of the range to be written back
  */
 void memory_region_do_writeback(MemoryRegion *mr, hwaddr addr, hwaddr size);
 
@@ -1591,6 +1798,8 @@ void memory_region_add_subregion_overlap(MemoryRegion *mr,
 /**
  * memory_region_get_ram_addr: Get the ram address associated with a memory
  *                             region
+ *
+ * @mr: the region to be queried
  */
 ram_addr_t memory_region_get_ram_addr(MemoryRegion *mr);
 
@@ -2161,6 +2370,7 @@ static inline bool memory_access_is_direct(MemoryRegion *mr, bool is_write)
  * @addr: address within that address space
  * @attrs: memory transaction attributes
  * @buf: buffer with the data transferred
+ * @len: length of the data transferred
  */
 static inline __attribute__((__always_inline__))
 MemTxResult address_space_read(AddressSpace *as, hwaddr addr,
-- 
1.8.3.1




  parent reply	other threads:[~2019-12-18 12:41 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-18 12:01 [PULL 00/87] Misc patches for 2019-12-18 Paolo Bonzini
2019-12-18 12:01 ` [PULL 01/87] kvm: Reallocate dirty_bmap when we change a slot Paolo Bonzini
2019-12-18 12:01 ` [PULL 02/87] migration-test: Create cmd_soure and cmd_target Paolo Bonzini
2019-12-18 12:01 ` [PULL 03/87] migration-test: Move hide_stderr to common commandline Paolo Bonzini
2019-12-18 12:01 ` [PULL 04/87] migration-test: Move -machine " Paolo Bonzini
2019-12-18 12:01 ` [PULL 05/87] migration-test: Move memory size " Paolo Bonzini
2019-12-18 12:01 ` [PULL 06/87] migration-test: Move shmem handling " Paolo Bonzini
2019-12-18 12:01 ` [PULL 07/87] migration-test: Move -name " Paolo Bonzini
2019-12-18 12:01 ` [PULL 08/87] migration-test: Move -serial " Paolo Bonzini
2019-12-18 12:01 ` [PULL 09/87] migration-test: Move -incomming " Paolo Bonzini
2019-12-18 12:01 ` [PULL 10/87] migration-test: Rename cmd_src/dst to arch_source/arch_target Paolo Bonzini
2019-12-18 12:01 ` [PULL 11/87] migration-test: Use a struct for test_migrate_start parameters Paolo Bonzini
2019-12-18 12:01 ` [PULL 12/87] memory: do not look at current_machine->accel Paolo Bonzini
2019-12-18 12:01 ` [PULL 13/87] vl: move icount configuration earlier Paolo Bonzini
2019-12-18 12:01 ` [PULL 14/87] tcg: move qemu_tcg_configure to accel/tcg/tcg-all.c Paolo Bonzini
2019-12-18 12:01 ` [PULL 15/87] vl: extract accelerator option processing to a separate function Paolo Bonzini
2019-12-18 12:01 ` [PULL 16/87] vl: merge -accel processing into configure_accelerators Paolo Bonzini
2019-12-18 12:01 ` [PULL 17/87] accel: compile accel/accel.c just once Paolo Bonzini
2019-12-18 12:01 ` [PULL 18/87] vl: introduce object_parse_property_opt Paolo Bonzini
2019-12-18 12:01 ` [PULL 19/87] vl: configure accelerators from -accel options Paolo Bonzini
2019-12-18 12:01 ` [PULL 20/87] vl: warn for unavailable accelerators, clarify messages Paolo Bonzini
2020-01-16 14:50   ` Laurent Vivier
2020-01-16 15:10     ` Paolo Bonzini
2019-12-18 12:01 ` [PULL 21/87] qom: introduce object_register_sugar_prop Paolo Bonzini
2019-12-18 12:01 ` [PULL 22/87] qom: add object_new_with_class Paolo Bonzini
2019-12-18 12:01 ` [PULL 23/87] accel: pass object to accel_init_machine Paolo Bonzini
2019-12-18 12:01 ` [PULL 24/87] tcg: convert "-accel threads" to a QOM property Paolo Bonzini
2019-12-18 12:01 ` [PULL 25/87] tcg: add "-accel tcg,tb-size" and deprecate "-tb-size" Paolo Bonzini
2019-12-18 12:01 ` [PULL 26/87] xen: convert "-machine igd-passthru" to an accelerator property Paolo Bonzini
2019-12-18 12:01 ` [PULL 27/87] kvm: convert "-machine kvm_shadow_mem" " Paolo Bonzini
2019-12-18 12:01 ` [PULL 28/87] kvm: introduce kvm_kernel_irqchip_* functions Paolo Bonzini
2019-12-18 12:01 ` [PULL 29/87] kvm: convert "-machine kernel_irqchip" to an accelerator property Paolo Bonzini
2020-01-07 14:46   ` Peter Maydell
2020-01-07 16:18     ` Paolo Bonzini
2019-12-18 12:01 ` [PULL 30/87] Makefile: remove unused variables Paolo Bonzini
2019-12-18 12:01 ` [PULL 31/87] object: Improve documentation of interfaces Paolo Bonzini
2019-12-18 12:01 ` [PULL 32/87] build-sys: build vhost-user-gpu only if CONFIG_TOOLS Paolo Bonzini
2019-12-18 12:01 ` [PULL 33/87] build-sys: do not include Windows SLIRP dependencies in $LIBS Paolo Bonzini
2019-12-18 12:02 ` [PULL 34/87] migration: fix maybe-uninitialized warning Paolo Bonzini
2019-12-18 12:02 ` [PULL 35/87] monitor: fix maybe-uninitialized Paolo Bonzini
2019-12-18 12:02 ` [PULL 36/87] vhost-user-scsi: fix printf format warning Paolo Bonzini
2019-12-18 12:02 ` [PULL 37/87] os-posix: simplify os_find_datadir Paolo Bonzini
2019-12-18 12:02 ` [PULL 38/87] tests: skip block layer tests if !CONFIG_TOOLS Paolo Bonzini
2019-12-18 12:02 ` [PULL 39/87] libvixl: remove per-target compiler flags Paolo Bonzini
2019-12-18 12:02 ` [PULL 40/87] crypto: move common bits for all emulators to libqemuutil Paolo Bonzini
2019-12-18 12:02 ` [PULL 41/87] stubs: replace stubs with lnot if applicable Paolo Bonzini
2019-12-18 12:02 ` [PULL 42/87] configure: set $PYTHON to a full path Paolo Bonzini
2019-12-18 12:02 ` [PULL 43/87] configure: simplify vhost condition with Kconfig Paolo Bonzini
2019-12-18 12:02 ` [PULL 44/87] i386: conditionally compile more files Paolo Bonzini
2019-12-18 12:02 ` [PULL 45/87] fw_cfg: allow building without other devices Paolo Bonzini
2019-12-18 12:02 ` [PULL 46/87] hw: replace hw/i386/pc.h with a header just for the i8259 Paolo Bonzini
2019-12-18 12:02 ` [PULL 47/87] pci-stub: add more MSI functions Paolo Bonzini
2019-12-18 12:02 ` [PULL 48/87] x86: move SMM property to X86MachineState Paolo Bonzini
2019-12-23 11:28   ` Michal Prívozník
2019-12-23 11:33     ` Daniel P. Berrangé
2019-12-23 11:40       ` Michal Prívozník
2019-12-23 13:38         ` Paolo Bonzini
2019-12-23 14:46           ` Michal Prívozník
2019-12-18 12:02 ` [PULL 49/87] hw/i386/pc: Convert DPRINTF() to trace events Paolo Bonzini
2019-12-18 12:02 ` [PULL 50/87] x86: move more x86-generic functions out of PC files Paolo Bonzini
2019-12-18 12:02 ` [PULL 51/87] acpi: move PC stubs out of stubs/ Paolo Bonzini
2019-12-18 12:02 ` [PULL 52/87] pc: stubify x86 iommu Paolo Bonzini
2019-12-18 12:02 ` [PULL 53/87] hw/i386: De-duplicate gsi_handler() to remove kvm_pc_gsi_handler() Paolo Bonzini
2019-12-18 12:02 ` [PULL 54/87] hw/i386: Simplify ioapic_init_gsi() Paolo Bonzini
2019-12-18 12:02 ` [PULL 55/87] hw/isa/isa-bus: cleanup irq functions Paolo Bonzini
2019-12-18 12:02 ` [PULL 56/87] hw/i386/pc: Use TYPE_PORT92 instead of hardcoded string Paolo Bonzini
2019-12-18 12:02 ` [PULL 57/87] hw/i386/pc: Inline port92_init() Paolo Bonzini
2019-12-18 12:02 ` [PULL 58/87] hw/i386/pc: Extract the port92 device Paolo Bonzini
2019-12-18 12:02 ` [PULL 59/87] hyperv: Use auto rcu_read macros Paolo Bonzini
2019-12-18 12:02 ` [PULL 60/87] qsp: Use WITH_RCU_READ_LOCK_GUARD Paolo Bonzini
2019-12-18 12:02 ` [PULL 61/87] memory: use RCU_READ_LOCK_GUARD Paolo Bonzini
2019-12-18 12:02 ` [PULL 62/87] colo: fix return without releasing RCU Paolo Bonzini
2019-12-18 12:02 ` [PULL 63/87] build: rename CONFIG_LIBCAP to CONFIG_LIBCAP_NG Paolo Bonzini
2019-12-18 12:02 ` [PULL 64/87] docs: import Linux kernel-doc script and extension Paolo Bonzini
2019-12-18 12:02 ` [PULL 65/87] docs: tweak kernel-doc for QEMU coding standards Paolo Bonzini
2019-12-18 12:02 ` [PULL 66/87] docs/conf.py: Enable use of kerneldoc sphinx extension Paolo Bonzini
2019-12-18 12:02 ` [PULL 67/87] Makefile: disable Sphinx nitpicking Paolo Bonzini
2019-12-18 12:02 ` [PULL 68/87] bitops.h: Silence kernel-doc complaints Paolo Bonzini
2019-12-18 12:02 ` [PULL 69/87] docs: Create bitops.rst as example of kernel-docs Paolo Bonzini
2019-12-18 12:02 ` [PULL 70/87] memory.h: Silence kernel-doc complaints Paolo Bonzini
2019-12-18 12:02 ` [PULL 71/87] docs: add memory API reference Paolo Bonzini
2019-12-18 12:02 ` Paolo Bonzini [this message]
2019-12-18 12:02 ` [PULL 73/87] migration: check length directly to make sure the range is aligned Paolo Bonzini
2019-12-18 12:02 ` [PULL 74/87] WHPX: refactor load library Paolo Bonzini
2019-12-18 12:02 ` [PULL 75/87] target/i386: remove unused pci-assign codes Paolo Bonzini
2019-12-18 12:02 ` [PULL 76/87] Fix some comment spelling errors Paolo Bonzini
2019-12-18 12:02 ` [PULL 77/87] hw/pci-host/i440fx: Correct the header description Paolo Bonzini
2019-12-18 12:02 ` [PULL 78/87] hw/pci-host/i440fx: Extract PCII440FXState to "hw/pci-host/i440fx.h" Paolo Bonzini
2019-12-18 12:02 ` [PULL 79/87] hw/pci-host/i440fx: Use size_t to iterate over ARRAY_SIZE() Paolo Bonzini
2019-12-18 12:02 ` [PULL 80/87] hw/pci-host/i440fx: Use definitions instead of magic values Paolo Bonzini
2019-12-18 12:02 ` [PULL 81/87] hw/pci-host/i440fx: Extract the IGD passthrough host bridge device Paolo Bonzini
2019-12-18 12:02 ` [PULL 82/87] hw/pci-host: Add Kconfig entry to select the IGD Passthrough Host Bridge Paolo Bonzini
2019-12-18 12:02 ` [PULL 83/87] hw/i386: Remove the deprecated machines 0.12 up to 0.15 Paolo Bonzini
2019-12-18 12:02 ` [PULL 84/87] hw/audio: Remove the "use_broken_id" hack from the AC97 device Paolo Bonzini
2019-12-18 12:02 ` [PULL 85/87] hw/pci: Remove the "command_serr_enable" property Paolo Bonzini
2019-12-18 12:02 ` [PULL 86/87] hw/display: Remove "rombar" hack from vga-pci and vmware_vga Paolo Bonzini
2019-12-18 12:02 ` [PULL 87/87] vga: cleanup mapping of VRAM for non-PCI VGA Paolo Bonzini
2019-12-20 12:45 ` [PULL 00/87] Misc patches for 2019-12-18 Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1576670573-48048-73-git-send-email-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).