* David Hildenbrand ([email protected]) wrote: > On 31.08.2018 12:43, Dr. David Alan Gilbert wrote: > > * David Hildenbrand ([email protected]) wrote: > >> > >>>> static gint memory_device_addr_sort(gconstpointer a, gconstpointer b) > >>>> { > >>>> const MemoryDeviceState *md_a = MEMORY_DEVICE(a); > >>>> @@ -168,6 +184,7 @@ static uint64_t > >>>> memory_device_get_free_addr(MachineState *ms, > >>>> for (item = list; item; item = g_slist_next(item)) { > >>>> MemoryDeviceState *md = item->data; > >>>> const MemoryDeviceClass *mdc = > >>>> MEMORY_DEVICE_GET_CLASS(OBJECT(md)); > >>>> + const char *id = memory_device_id(md); > >>>> uint64_t md_size, md_addr; > >>>> > >>>> md_addr = mdc->get_addr(md); > >>>> @@ -178,8 +195,8 @@ static uint64_t > >>>> memory_device_get_free_addr(MachineState *ms, > >>>> > >>>> if (ranges_overlap(md_addr, md_size, new_addr, size)) { > >>>> if (hint) { > >>>> - const DeviceState *d = DEVICE(md); > >>>> - error_setg(errp, "address range conflicts with '%s'", > >>>> d->id); > >>>> + error_setg(errp, "address range conflicts with '%s'", > >>>> + id ? id : 0); > >>> > >>> What's that 'id ? id : 0' trick for? > >> > >> 0 -> "", then it actually makes sense :) > >> > >> I'll fix this up, thanks! > > > > Except that: > > > > address range conflicts with '' > > isn't very helpful. > > Why would you get a NULL id ? > > This is easy: don't specify an id for a memory device: > > Unfortunately, if the user does not give ids to devices, there is no way > of telling him what we are talking about. > > qemu-system-x86_64 -machine pc -m 4G,maxmem=20G,slots=4 \ > -object memory-backend-ram,id=mem0,size=4G \ > -object memory-backend-ram,id=mem1,size=4G \ > -device pc-dimm,memdev=mem0,addr=0x140000000 \ > -device pc-dimm,memdev=mem1,addr=0x140000000 > > qemu-system-x86_64: -device pc-dimm,memdev=mem1,addr=0x140000000: > address range conflicts with '(null)' > > (I thought providing NULL would lead to a crash, but it is actually > handled properly) > > So while not being able to indicate an id is not nice, I can simply > forward the id directly here.
OK, or use something like id ? id : "(unnamed)" Dave > Thanks! > > > > > Dave > > > >> > >> -- > >> > >> Thanks, > >> > >> David / dhildenb > > -- > > Dr. David Alan Gilbert / [email protected] / Manchester, UK > > > > > -- > > Thanks, > > David / dhildenb -- Dr. David Alan Gilbert / [email protected] / Manchester, UK
