On Fri, Feb 23, 2024 at 08:53:37AM +0100, Uwe Kleine-König wrote: > On Fri, Feb 23, 2024 at 03:41:40PM +1100, David Gibson wrote: > > On Thu, Feb 22, 2024 at 10:38:54AM +0100, Uwe Kleine-König wrote: > > > On Thu, Feb 22, 2024 at 05:32:10PM +1100, David Gibson wrote: > > > > And here you can use fdt32_st() on (tree_val + poffset), avoiding > > > > quite some complexity. > > > > > > There is some complexity because tree_val is a const char * (as this is > > > what fdt_getprop() returns) and fdt32_st() obviously doens't take a > > > const pointer. > > > > Ah, right. You can use fdt_getprop_w() to get a writable pointer > > instead. If there was a way to have fdt_getprop() return a const > > pointer only if the fdt pointer it was given was const, I'd do that. > > Look at how container_of_const() is defined in the kernel[1], this > requires C11 though. See Right. Just like we avoid allocations to allow libfdt to be used in constrained environments like bootloaders, we're also very conservative with which compiler features we want to rely on. > https://en.cppreference.com/w/c/language/generic for some docs. > > [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/container_of.h?h=v6.7#n32 > > > > If you want to play around with that, the code is mostly a copy of > > > overlay_update_local_node_references() which could benefit from your > > > suggestions in the same way. > > > > That's quite plausible. > > > > > Can I lure you in improving overlay_update_local_node_references()? Then > > > > Fair point.. > > > > https://github.com/dgibson/dtc/commit/24f60011fd43683d8e3916435c4c726e9baac9c9 > > I gave feedback on that one. Looks good. > > > > I could copy from the improved function for my patch. (Or maybe refactor > > > the function to take a function as parameter which is > > > > Eh... I'd prefer to avoid higher order functions in something this low > > level. > > OK. To elaborate here, I can also image certain platform + environment + compiler combinations where indirect calls don't work properly in an early boot environment. They should, of course, but you'd be astonished how many messed up things I've seen in firmwares. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson