Re: [PATCH] memory: transaction API

Ferry Huberts
2011-07-21T12:56:10Z

On 07/21/2011 02:46 PM, Avi Kivity wrote:
> 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
> }
>

ahhh. I completely read over the memory_region_update_topology change.
shame on me, sorry for the confusion!

--
Ferry Huberts