Fix the implementation of rdtsc in src/mevent_test.c:68 #181
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.
In inline assembly of xhyve/src/mevent_test.c:68, an unused inline
assembly
__asm__ __volatile__ ("cpuid")
is written here.cpuid
is aninstruction which overrides register eax, ebx, ecx and edx by the
information of cpu, (details can be found in x86_64 specification).
This inline assembly is not only unuseful, under some context, it may
corrupt the normal C data flow, and cause errors in C world. For example:
The above code on my pc (gcc-8 -O2) will output 1, 2, 3, 7bcbf4733e902,
(assume rdtsc now is 7bcbf4733e902), but the actual output should be 1, 3,
3, 7bcbf4733e902, the reason is that cpuid override some registers
unexpectedly.