grub_cmd_sleep.in 786 B

1234567891011121314151617181920212223242526
  1. #! @BUILD_SHEBANG@
  2. set -e
  3. . "@builddir@/grub-core/modinfo.sh"
  4. # FIXME: OpenBIOS on sparc64 doesn't implement RTC
  5. if [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = sparc64-ieee1275 ]; then
  6. exit 77
  7. fi
  8. # Compare RTC with interval timer.
  9. # Not 100% proper but should check that timer is running ok
  10. dt=`echo 'date; sleep 10; date' | @builddir@/grub-shell`
  11. dt1="$(date -u -d "$(echo "$dt" | head -n 1 | sed 's, [A-Z][a-z]*$,,')" +%s)"
  12. dt2="$(date -u -d "$(echo "$dt" | tail -n 1 | sed 's, [A-Z][a-z]*$,,')" +%s)"
  13. # Ignore QEMU bug
  14. if [ "${grub_modinfo_target_cpu}" = arm ] && [ $((dt2 - dt1)) -ge 15 ] && [ $((dt2 - dt1)) -le 17 ]; then
  15. exit 0;
  16. fi
  17. if [ $((dt2 - dt1)) -gt 11 ] || [ $((dt2 - dt1)) -lt 9 ]; then
  18. echo "Interval not in range $dt2-$dt1 != 10"
  19. exit 1
  20. fi