+/**\r
+ The WaitForTick() function waits for the number of ticks specified by\r
+ TickNumber from a known time source in the platform. If TickNumber of\r
+ ticks are detected, then EFI_SUCCESS is returned. The actual time passed\r
+ between entry of this function and the first tick is between 0 and\r
+ TickPeriod 100 nS units. If you want to guarantee that at least TickPeriod\r
+ time has elapsed, wait for two ticks. This function waits for a hardware\r
+ event to determine when a tick occurs. It is possible for interrupt\r
+ processing, or exception processing to interrupt the execution of the\r
+ WaitForTick() function. Depending on the hardware source for the ticks, it\r
+ is possible for a tick to be missed. This function cannot guarantee that\r
+ ticks will not be missed. If a timeout occurs waiting for the specified\r
+ number of ticks, then EFI_TIMEOUT is returned.\r
+\r
+ @param This The EFI_METRONOME_ARCH_PROTOCOL instance.\r
+ @param TickNumber Number of ticks to wait.\r
+\r
+ @retval EFI_SUCCESS The wait for the number of ticks specified by TickNumber\r
+ succeeded.\r
+ @retval EFI_TIMEOUT A timeout occurred waiting for the specified number of ticks.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+WaitForTick (\r
+ IN EFI_METRONOME_ARCH_PROTOCOL *This,\r
+ IN UINT32 TickNumber\r
+ )\r
+{\r
+ //\r
+ // Compute how long to stall the CPU.\r
+ // gMetronome.TickPeriod is in 100 ns units so it needs to be divided by 10\r
+ // to get it in microseconds units.\r
+ //\r
+ MicroSecondDelay (TickNumber * gMetronome.TickPeriod / 10);\r
+ return EFI_SUCCESS;\r
+}\r
+\r
+\r