| // This file was extracted from the TCG Published |
| // Trusted Platform Module Library |
| // Part 3: Commands |
| // Family "2.0" |
| // Level 00 Revision 01.16 |
| // October 30, 2014 |
| |
| #include "InternalRoutines.h" |
| #include "ReadClock_fp.h" |
| TPM_RC |
| TPM2_ReadClock( |
| ReadClock_Out *out // OUT: output parameter list |
| ) |
| { |
| // Command Output |
| out->currentTime.time = g_time; |
| TimeFillInfo(&out->currentTime.clockInfo); |
| |
| #ifndef EMBEDDED_MODE |
| { |
| UINT64 start_time = _plat__ClockTimeFromStart(); |
| // When running on a simulator, some tests fail, because two commands |
| // invoked back to back happen to run within the same millisecond, but |
| // the test expects time readings to be different. Modifying the tests |
| // is more involved, let's just wait a couple of milliseconds here to |
| // avoid those tests' false negatives. |
| while ((_plat__ClockTimeFromStart() - start_time) < 2) |
| ; |
| } |
| #endif |
| return TPM_RC_SUCCESS; |
| } |