qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [RFC PATCH 2/6] ram_blocks: Convert to a QLIST


From: Alex Williamson
Subject: [Qemu-devel] Re: [RFC PATCH 2/6] ram_blocks: Convert to a QLIST
Date: Tue, 08 Jun 2010 15:45:48 -0600

On Tue, 2010-06-08 at 14:26 -0700, Chris Wright wrote:
> * Alex Williamson (address@hidden) wrote:
> >  extern int phys_ram_fd;
> > -extern uint8_t *phys_ram_dirty;
> >  extern ram_addr_t ram_size;
> > -extern ram_addr_t last_ram_offset;
> > +
> > +typedef struct RAMBlock {
> > +    uint8_t *host;
> > +    ram_addr_t offset;
> > +    ram_addr_t length;
> > +    QLIST_ENTRY(RAMBlock) next;
> > +} RAMBlock;
> > +
> > +typedef struct RAMList {
> > +    uint8_t *phys_dirty;
> > +    ram_addr_t last_offset;
> > +    QLIST_HEAD(ram, RAMBlock) blocks;
> > +} RAMList;
> > +extern RAMList ram;
> 
> such a generic name for global namespace

Well it is _the_ ram, but yea... ;)  Suggestions?

> > -    if (!block) {
> > -        fprintf(stderr, "Bad ram offset %" PRIx64 "\n", (uint64_t)addr);
> > -        abort();
> > -    }
> > -    /* Move this entry to to start of the list.  */
> > -    if (prev) {
> > -        prev->next = block->next;
> > -        block->next = *prevp;
> > -        *prevp = block;
> > +    QLIST_FOREACH(block, &ram.blocks, next) {
> > +        if (addr - block->offset < block->length) {
> > +            QLIST_REMOVE(block, next);
> > +            QLIST_INSERT_HEAD(&ram.blocks, block, next);
> > +            return block->host + (addr - block->offset);
> > +        }
> >      }
> > -    return block->host + (addr - block->offset);
> > +
> > +    return NULL;
> 
> Why not preserve the error message and abort()?  In error cases this
> would now just segfault.

Guess I was hoping the caller might do something smart, but I'll put it
back since that hasn't happened.  Thanks,

Alex




reply via email to

[Prev in Thread] Current Thread [Next in Thread]