Hi David, On 9/26/18 11:42 AM, David Hildenbrand wrote: > Document the functions and when to not expect errors. > > Reviewed-by: David Gibson <da...@gibson.dropbear.id.au> > Signed-off-by: David Hildenbrand <da...@redhat.com>
> --- > include/hw/mem/memory-device.h | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/include/hw/mem/memory-device.h b/include/hw/mem/memory-device.h > index f02b229837..1d15cfc357 100644 > --- a/include/hw/mem/memory-device.h > +++ b/include/hw/mem/memory-device.h > @@ -29,9 +29,25 @@ typedef struct MemoryDeviceState { > Object parent_obj; > } MemoryDeviceState; > > +/**> + * MemoryDeviceClass: > + * @get_addr: The address of the @md in guest physical memory. "0" means that > + * no address has been specified by the user and that no address has been > + * assigned yet. > + * @get_plugged_size: The amount of memory provided by this @md currently > + * usable ("plugged") by the guest. This is helpful for devices that > + * dynamically manage the amount of memory accessible by the guest via > + * the reserved memory region. For most devices, this corresponds to the > + * size of the memory region. > + * @get_region_size: The size of the memory region of the @md that's mapped > + * in guest physical memory at @get_addr. > + * @fill_device_info: Translate current @md state into #MemoryDeviceInfo. I think it may be relevant to document whether all those functions are mandated or if any are optional. With respect to the form, you could get inspired of include/exec/memory.h (see for instance IOMMUMemoryRegionClass doc) Thanks Eric > + */ > typedef struct MemoryDeviceClass { > + /* private */ > InterfaceClass parent_class; > > + /* public */ > uint64_t (*get_addr)(const MemoryDeviceState *md); > uint64_t (*get_plugged_size)(const MemoryDeviceState *md, Error **errp); > uint64_t (*get_region_size)(const MemoryDeviceState *md, Error **errp); >