cpuinfo.c 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /****************************************************************************
  2. *
  3. * Ultra Long Period Timer
  4. *
  5. * ========================================================================
  6. *
  7. * The contents of this file are subject to the SciTech MGL Public
  8. * License Version 1.0 (the "License"); you may not use this file
  9. * except in compliance with the License. You may obtain a copy of
  10. * the License at http://www.scitechsoft.com/mgl-license.txt
  11. *
  12. * Software distributed under the License is distributed on an
  13. * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  14. * implied. See the License for the specific language governing
  15. * rights and limitations under the License.
  16. *
  17. * The Original Code is Copyright (C) 1991-1998 SciTech Software, Inc.
  18. *
  19. * The Initial Developer of the Original Code is SciTech Software, Inc.
  20. * All Rights Reserved.
  21. *
  22. * ========================================================================
  23. *
  24. * Language: ANSI C
  25. * Environment: *** TODO: ADD YOUR OS ENVIRONMENT NAME HERE ***
  26. *
  27. * Description: Module to implement OS specific services to measure the
  28. * CPU frequency.
  29. *
  30. ****************************************************************************/
  31. #include <OS.h>
  32. /*----------------------------- Implementation ----------------------------*/
  33. /****************************************************************************
  34. REMARKS:
  35. Increase the thread priority to maximum, if possible.
  36. ****************************************************************************/
  37. static int SetMaxThreadPriority(void)
  38. {
  39. thread_id thid = find_thread(NULL);
  40. thread_info tinfo;
  41. get_thread_info(thid, &tinfo);
  42. set_thread_priority(thid, B_REAL_TIME_PRIORITY);
  43. return tinfo.priority;
  44. }
  45. /****************************************************************************
  46. REMARKS:
  47. Restore the original thread priority.
  48. ****************************************************************************/
  49. static void RestoreThreadPriority(
  50. int priority)
  51. {
  52. thread_id thid = find_thread(NULL);
  53. set_thread_priority(thid, priority);
  54. }
  55. /****************************************************************************
  56. REMARKS:
  57. Initialise the counter and return the frequency of the counter.
  58. ****************************************************************************/
  59. static void GetCounterFrequency(
  60. CPU_largeInteger *freq)
  61. {
  62. /* TODO: Return the frequency of the counter in here. You should try to */
  63. /* normalise this value to be around 100,000 ticks per second. */
  64. freq->low = 1000000;
  65. freq->high = 0;
  66. }
  67. /****************************************************************************
  68. REMARKS:
  69. Read the counter and return the counter value.
  70. TODO: Implement this to read the counter. It should be done as a macro
  71. for accuracy.
  72. ****************************************************************************/
  73. #define GetCounter(t) { *((bigtime_t*) t) = system_time(); }