Re: [PATCH] memory: transaction API

Avi Kivity
2011-07-21T12:46:58Z

On 07/21/2011 03:26 PM, Ferry Huberts wrote:
> >> > +void memory_region_transaction_begin(void)
> >> > +{
> >> > + ++memory_region_transaction_depth;
> >> > +}
> >> > +
> >>
> >> wouldn't you rather keep it safe by doing either here
> >>
> >> if (!memory_region_transaction_depth)
> >> memory_region_transaction_depth++;
> >>
> >
> > Why? I want to allow nesting transactions (not that I anticipate such a
> > case).
> >
>
> doesn't memory_region_update_topology commit all accumulated changes?

It does.

> if
> it does then memory_region_transaction_depth is left non-zero in the
> nesting case while no more changes are actually present, resulting in
> superfluous calls to memory_region_update_topology.
>
> maybe I misunderstood memory_region_update_topology?
>

update_mapping()
{
m_r_t_begin();
// call memory API functions to change hierarchy
some_other_function() entered
m_r_t_begin();
// call more memory API functions to change hierarchy
m_r_t_commit(); // nothing happens
some_other_function() exits
// call even more memory API functions to change hierarchy
m_r_t_commit(); // all accumulated changes become visible
}

--
error compiling committee.c: too many arguments to function