In the documentation, getsystemtime takes an integer output variable as an argument and returns an integer indicating success (so: int getsystemtime(int)). In practice, it would appear to have a signature of void getsystemtime(int) and do nothing whatsoever. Should it work? Are there platform limitations?
What I want is a way to retrieve the current time (from the perspective of the guest) for a guest that is being replayed. I was hoping getsystemtime would be my solution. My current solution (for a 32-bit Ubuntu 9.04 linux guest using 2.6.28-13) is to retrieve the 8-byte xtime value having looked up the offset via kallsyms. The deficiency is that time only advances when the kernel updates it.
Does VMware maintain a better internal time-clock (or at least a monotonically increasing counter) during replay that is relatively immune to the time cost of running vprobes (and does not increment when suspended)? My overall use-case is to record the execution of a program with no vprobes active. Once I have the recording, I want to replay it with (potentially expensive, at least in aggregate) vprobes in place while also having an idea of what the original timeline was.
If xtime is my best option, I won't complain if you tell me how to turn up the resolution and what would be a reasonable setting to avoid making the execution less realistic because the VM spends all its time handling timer interrupts.