ut0ut.c
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*******************************************************************
  2. Various utilities for Innobase.
  3. (c) 1994, 1995 Innobase Oy
  4. Created 5/11/1994 Heikki Tuuri
  5. ********************************************************************/
  6. #include "ut0ut.h"
  7. #ifdef UNIV_NONINL
  8. #include "ut0ut.ic"
  9. #endif
  10. #include "ut0sort.h"
  11. ibool ut_always_false = FALSE;
  12. /************************************************************
  13. The following function returns a clock time in milliseconds. */
  14. ulint
  15. ut_clock(void)
  16. {
  17. return((clock() * 1000) / CLOCKS_PER_SEC);
  18. }
  19. /**************************************************************
  20. Returns system time. We do not specify the format of the time returned:
  21. the only way to manipulate it is to use the function ut_difftime. */
  22. ib_time_t
  23. ut_time(void)
  24. /*=========*/
  25. {
  26. return(time(NULL));
  27. }
  28. /**************************************************************
  29. Returns the difference of two times in seconds. */
  30. double
  31. ut_difftime(
  32. /*========*/
  33. /* out: time2 - time1 expressed in seconds */
  34. ib_time_t time2, /* in: time */
  35. ib_time_t time1) /* in: time */
  36. {
  37. return(difftime(time2, time1));
  38. }
  39. /*****************************************************************
  40. Runs an idle loop on CPU. The argument gives the desired delay
  41. in microseconds on 100 MHz Pentium + Visual C++. */
  42. ulint
  43. ut_delay(
  44. /*=====*/
  45. /* out: dummy value */
  46. ulint delay) /* in: delay in microseconds on 100 MHz Pentium */
  47. {
  48. ulint i, j;
  49. j = 0;
  50. for (i = 0; i < delay * 50; i++) {
  51. j += i;
  52. }
  53. if (ut_always_false) {
  54. printf("%lu", j);
  55. }
  56. return(j);
  57. }
  58. /*****************************************************************
  59. Prints the contents of a memory buffer in hex and ascii. */
  60. void
  61. ut_print_buf(
  62. /*=========*/
  63. byte* buf, /* in: memory buffer */
  64. ulint  len) /* in: length of the buffer */
  65. {
  66. byte* data;
  67. ulint i;
  68. printf(" len %lu; hex ", len);
  69. data = buf;
  70. for (i = 0; i < len; i++) {
  71. printf("%02lx", (ulint)*data);
  72. data++;
  73. }
  74. printf("; asc ");
  75. data = buf;
  76. for (i = 0; i < len; i++) {
  77. if (isprint((char)(*data))) {
  78. printf("%c", (char)*data);
  79. }
  80. data++;
  81. }
  82. printf(";");
  83. }
  84. /*****************************************************************
  85. Prints the contents of a memory buffer in hex and ascii. */
  86. ulint
  87. ut_sprintf_buf(
  88. /*===========*/
  89. /* out: printed length in bytes */
  90. char* str, /* in: buffer to print to */
  91. byte* buf, /* in: memory buffer */
  92. ulint  len) /* in: length of the buffer */
  93. {
  94. byte* data;
  95. ulint n;
  96. ulint i;
  97. n = 0;
  98. n += sprintf(str + n, " len %lu; hex ", len);
  99. data = buf;
  100. for (i = 0; i < len; i++) {
  101. n += sprintf(str + n, "%02lx", (ulint)*data);
  102. data++;
  103. }
  104. n += sprintf(str + n, "; asc ");
  105. data = buf;
  106. for (i = 0; i < len; i++) {
  107. if (isprint((char)(*data))) {
  108. n += sprintf(str + n, "%c", (char)*data);
  109. }
  110. data++;
  111. }
  112. n += sprintf(str + n, ";");
  113. return(n);
  114. }
  115. /****************************************************************
  116. Sort function for ulint arrays. */
  117. void
  118. ut_ulint_sort(ulint* arr, ulint* aux_arr, ulint low, ulint high)
  119. /*============================================================*/
  120. {
  121. UT_SORT_FUNCTION_BODY(ut_ulint_sort, arr, aux_arr, low, high,
  122. ut_ulint_cmp);
  123. }