volatile: revert changes introduced by #95 #132
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
#95 fixed the problem of torn reads/writes caused by the implementation
of read/write_obj essentially leveraging the environment specific
memcpy, and the implicit assumption that read/write_obj perform atomic
accesses up to a certain size at aligned addresses. Meanwhile, we added
the load/store operations to Bytes which provide explicit atomic access
semantics.
Now there are three possible types of memory access methods:
VolatileSlice
::load/store() for integer atomic datatypes
VolatileRef
|VolatileArrayRef
}::{load|store()|copy_from|copy_from} when size_of::() > 1
Explicitly states that GuestMemory/Bytes are byte stream oriented, and do
not guarantee atomicity. Callers need to be care to choose the access method,
in preference for both safety and high performance.
Signed-off-by: Liu Jiang [email protected]
Fixes: #95