Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /**************************************************************************
  2.  *
  3.  * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
  4.  * All Rights Reserved.
  5.  *
  6.  * Permission is hereby granted, free of charge, to any person obtaining a
  7.  * copy of this software and associated documentation files (the
  8.  * "Software"), to deal in the Software without restriction, including
  9.  * without limitation the rights to use, copy, modify, merge, publish,
  10.  * distribute, sub license, and/or sell copies of the Software, and to
  11.  * permit persons to whom the Software is furnished to do so, subject to
  12.  * the following conditions:
  13.  *
  14.  * The above copyright notice and this permission notice (including the
  15.  * next paragraph) shall be included in all copies or substantial portions
  16.  * of the Software.
  17.  *
  18.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  19.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  20.  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
  21.  * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
  22.  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  23.  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  24.  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  25.  *
  26.  **************************************************************************/
  27.  
  28. /**
  29.  * @file
  30.  * OS independent time-manipulation functions.
  31.  *
  32.  * @author Jose Fonseca <jrfonseca@tungstengraphics.com>
  33.  */
  34.  
  35. #ifndef U_TIME_H_
  36. #define U_TIME_H_
  37.  
  38.  
  39. #include "pipe/p_config.h"
  40.  
  41. #include "os/os_time.h"
  42.  
  43. #include "pipe/p_compiler.h"
  44.  
  45.  
  46. #ifdef  __cplusplus
  47. extern "C" {
  48. #endif
  49.  
  50.  
  51. /**
  52.  * Time abstraction.
  53.  *
  54.  * Do not access this structure directly. Use the provided function instead.
  55.  */
  56. struct util_time
  57. {
  58.    int64_t counter;
  59. };
  60.    
  61.  
  62. PIPE_DEPRECATED
  63. static INLINE void
  64. util_time_get(struct util_time *t)
  65. {
  66.    t->counter = os_time_get();
  67. }
  68.  
  69.  
  70. /**
  71.  * Return t2 = t1 + usecs
  72.  */
  73. PIPE_DEPRECATED
  74. static INLINE void
  75. util_time_add(const struct util_time *t1,
  76.               int64_t usecs,
  77.               struct util_time *t2)
  78. {
  79.    t2->counter = t1->counter + usecs;
  80. }
  81.  
  82.  
  83. /**
  84.  * Return difference between times, in microseconds
  85.  */
  86. PIPE_DEPRECATED
  87. static INLINE int64_t
  88. util_time_diff(const struct util_time *t1,
  89.                const struct util_time *t2)
  90. {
  91.    return t2->counter - t1->counter;
  92. }
  93.  
  94.  
  95. /**
  96.  * Compare two time values.
  97.  *
  98.  * Not publicly available because it does not take in account wrap-arounds.
  99.  * Use util_time_timeout instead.
  100.  */
  101. static INLINE int
  102. _util_time_compare(const struct util_time *t1,
  103.                    const struct util_time *t2)
  104. {
  105.    if (t1->counter < t2->counter)
  106.       return -1;
  107.    else if(t1->counter > t2->counter)
  108.       return 1;
  109.    else
  110.       return 0;
  111. }
  112.  
  113.  
  114. /**
  115.  * Returns non-zero when the timeout expires.
  116.  */
  117. PIPE_DEPRECATED
  118. static INLINE boolean
  119. util_time_timeout(const struct util_time *start,
  120.                   const struct util_time *end,
  121.                   const struct util_time *curr)
  122. {
  123.    return os_time_timeout(start->counter, end->counter, curr->counter);
  124. }
  125.  
  126.  
  127. /**
  128.  * Return current time in microseconds
  129.  */
  130. PIPE_DEPRECATED
  131. static INLINE int64_t
  132. util_time_micros(void)
  133. {
  134.    return os_time_get();
  135. }
  136.  
  137.  
  138. PIPE_DEPRECATED
  139. static INLINE void
  140. util_time_sleep(int64_t usecs)
  141. {
  142.    os_time_sleep(usecs);
  143. }
  144.  
  145.  
  146. #ifdef  __cplusplus
  147. }
  148. #endif
  149.  
  150. #endif /* U_TIME_H_ */
  151.