|
From: | Mark Cave-Ayland |
Subject: | Re: [Qemu-devel] Memory API: handling unassigned physical memory |
Date: | Mon, 30 Apr 2012 15:55:56 +0100 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20120317 Icedove/3.0.11 |
On 30/04/12 15:39, Peter Maydell wrote:
Right I think I'm starting to understand this now - in which case it becomes a matter of just copying a handful of lines within sun4m which is more bearable. In your view, would a suitable fix be to change dma_memory_read, dma_memory_write, dma_opaque, it_shift and dma_enabled to be qdev properties and modify esp_init() to return the qdev reference so they can be set by the caller?They should be some kind of qdev property, probably. Since you can't change a property after the qdev_init there's not much point changing esp_init to return the DeviceState*, though.
In the meantime I've found a bit of reference documentation related to QOM and properties here: http://wiki.qemu.org/Features/QOM.
(Disclaimer: I'm not sure what the best QOM/qdev practice is for "here is a set of function pointers". In my ideal world this would be done by setting a single strongly typed qdev property which encapsulates the idea of "here is a connection into which you can plug something that satisfies this dma read/write API".)
Note that if properties can't be set by the caller after construction, then I'm effectively going to have to copy the entire esp_init() function; so until the QOM magic happens to allow plugging things into arbitrary buses, I might as well just keep a copy in sun4m.c with my local modifications as sun4_esp_init() and be done with it. Slightly frustrating, but I think that's going to be the easiest solution for the moment.
ATB, Mark.
[Prev in Thread] | Current Thread | [Next in Thread] |