On 17.05.2022 16:33, Matias Ezequiel Vara Larsen wrote: > @@ -287,6 +288,10 @@ static inline void vcpu_runstate_change( > } > > v->runstate.state = new_state; > + > + // WIP: use a different interface > + runstate = (uint64_t*)v->stats.va; > + memcpy(runstate, &v->runstate.time[0], sizeof(v->runstate.time[0])); > }
One remark on top of what George has said: By exposing this information the way you do, you allow updating and reading of it to be fully asynchronous. That way a consumer may fetch inconsistent (partially updated) state (and this would be even more so when further fields would be added). For the data to be useful, you need to add a mechanism for consumers to know when an update is in progress, so they can wait and then retry. You'll find a number of instances of such in the code base. In general I also have to admit that I'm not sure the exposed data really qualifies as a "resource", and hence I'm not really convinced of your use of the resource mapping interface as a vehicle. Jan
