On 26 June 2013 13:38, Peter Crosthwaite <peter.crosthwa...@xilinx.com> wrote:
> On Wed, Jun 26, 2013 at 8:50 PM, Peter Maydell <peter.mayd...@linaro.org> 
> wrote:
>> I think we could avoid the "varargs doesn't promote" problem
>> by using a varargs-macro wrapper:
>>
>> #define qemu_devtree_setprop_sized_cells(fdt, node, prop, ...) \
>>     do {   \
>>         uint64_t args[] = { __VA_ARGS__ }; \
>>         do_qemu_devtree_setprop_sized_cells(fdt, node, prop, \
>>             args, sizeof(args));
>>     } while (0)
>>
>
> Are statement expressions sanctioned? Or do we need to give up the
> nice caller accessible return codes?

I just borrowed the syntax from the existing qemu_devtree_setprop_cells
macro to illustrate how the varargs bit would work; I'll tweak it to
actually get the return code right for the patch proper.

> And can we factor out common functionality (mainly the error checking)
> with existing set_prop_cells to make the interfaces consistent? (we
> need to get rid of those aborts sooner or later)

Maybe we should at some point switch to using Error** for error
reporting in our wrapper APIs here? It is a bit odd that half
our device tree functions die on error and the other half
report a failure code.

>> which will promote everything (including the size arguments,
>> harmlessly) to uint64_t, and avoids having a varargs function.
>>
>>> Can't we also just add a qemu_devtree_setprop_reg() that walks
>>> the tree downwards in search for #address-cells and #size-cells
>>> and assembles the correct reg property from a list of 64bit
>>> arguments?
>>
>
> I have a patch in my tree that generalises qemu_devtree_getprop* to
> allow you walk parents for properties (as per the #foo-cells
> semantic). I use it for interrupt cells however, which kinda suggests
> that this wish for parent traversal is more generic than just
> populating reg. I think that Peters patch, along with a parent search
> friendly property search will be enough to be able to do whatever you
> want in only a handful of lines.

Sounds good to me.

-- PMM

Reply via email to