]> rtime.felk.cvut.cz Git - frescor/fosa.git/commitdiff
add incr timespec
authorsangorrin <sangorrin@35b4ef3e-fd22-0410-ab77-dab3279adceb>
Tue, 4 Nov 2008 18:29:24 +0000 (18:29 +0000)
committersangorrin <sangorrin@35b4ef3e-fd22-0410-ab77-dab3279adceb>
Tue, 4 Nov 2008 18:29:24 +0000 (18:29 +0000)
git-svn-id: http://www.frescor.org/private/svn/frescor/fosa/trunk@1363 35b4ef3e-fd22-0410-ab77-dab3279adceb

include/fosa_time_timespec.h

index d6de447c57102a6c94214fe1748d8fecdba44b59..77ce73eb8482de38b6fa515dc2caac9671dfa8b4 100644 (file)
@@ -61,7 +61,7 @@
 //  **////  /**    ** ////////** /**//////**
 //  **      /**    **        /** /**     /**
 //  **      /**    **  ********  /**     /**
-//  //       /******/  ////////   //      // 
+//  //       /******/  ////////   //      //
 //
 // FOSA(Frescor Operating System Adaptation layer)
 //================================================
@@ -85,7 +85,6 @@ do \
     } \
 } while(0)
 
-
 #define add_timespec(sum, t1, t2) \
 do { \
     (sum).tv_sec = (t1).tv_sec + (t2).tv_sec; \
@@ -93,7 +92,12 @@ do { \
     normalize_timespec(sum); \
 } while(0)
 
-
+#define incr_timespec(t1, t2) \
+do { \
+        (t1).tv_sec += (t2).tv_sec; \
+        (t1).tv_nsec += (t2).tv_nsec; \
+        normalize_timespec(t1); \
+} while(0)
 
 // -------------------------------------------------------------------
 
@@ -111,7 +115,7 @@ do { \
         (diff).tv_sec = (base).tv_sec - (interval).tv_sec; \
         (diff).tv_nsec = (base).tv_nsec - (interval).tv_nsec; \
     } \
-} while(0) 
+} while(0)
 
 
 // ---------------------------------------------------------
@@ -140,7 +144,7 @@ do { \
 // ---------------------------------------------------------
 
 #define timespec_to_msec(t1) \
-   ( ((t1).tv_sec % 2147482) * 1000 + (t1).tv_nsec/1000000 ) 
+   ( ((t1).tv_sec % 2147482) * 1000 + (t1).tv_nsec/1000000 )
 
 
 // ---------------------------------------------------------
@@ -189,7 +193,7 @@ do { \
 #define timespec_is_null(t1) ( (t1).tv_sec == 0 ) && ( (t1).tv_nsec == 0 )
 
 
-  
+
 /***************************************/
 /* T I M E S P E C   F U N C T I O N S */
 /***************************************/
@@ -198,7 +202,7 @@ do { \
 static inline fosa_abs_time_t fosa_abs_time_incr(fosa_abs_time_t base, fosa_rel_time_t interval)
 {
     fosa_abs_time_t result;
-    
+
     add_timespec(result, base, interval);
 
     return result;
@@ -240,7 +244,7 @@ static inline fosa_rel_time_t fosa_rel_time_add(fosa_rel_time_t relt1, fosa_rel_
 
     return result;
 }
-    
+
 
 // ---------------------------------------------------------
 
@@ -259,7 +263,7 @@ static inline fosa_rel_time_t fosa_rel_time_decr(fosa_rel_time_t total, fosa_rel
  * exact_long_multiply_smaller_10e5()
  *
  * Same as below but with operands smaller than 10000 which allows
- * to perform all component multiplications without an overflow risk. 
+ * to perform all component multiplications without an overflow risk.
  **/
 static inline struct timespec exact_long_multiply_smaller_10e5(long t, long k)
 {
@@ -302,10 +306,10 @@ static inline struct timespec exact_long_multiply_smaller_10e5(long t, long k)
     return result;
 }
 
-    
-// -------------------------------------------------------------    
 
-    
+// -------------------------------------------------------------
+
+
 
 /**
  * exact_long_multiply()
@@ -382,7 +386,7 @@ static inline struct timespec exact_long_multiply(long t, long k)
     {
         overflow_risk = true;
     }
-    
+
     if (! overflow_risk)
     {
         c0.tv_sec = 0;
@@ -397,8 +401,8 @@ static inline struct timespec exact_long_multiply(long t, long k)
 
     return result;
 }
-    
-// -------------------------------------------------------------    
+
+// -------------------------------------------------------------
 
 
 static inline fosa_rel_time_t fosa_rel_time_times_integer(fosa_rel_time_t time, long multiplier)
@@ -412,7 +416,7 @@ static inline fosa_rel_time_t fosa_rel_time_times_integer(fosa_rel_time_t time,
     intermediate = exact_long_multiply(time.tv_nsec, multiplier);
 
     add_timespec(result, result, intermediate);
-    
+
     return result;
 }
 
@@ -452,7 +456,7 @@ static inline fosa_rel_time_t fosa_rel_time_divided_by_integer(fosa_rel_time_t t
         enhacer *= 10;
         back_enhacer = 1000000000 / enhacer;
         next_numeral = (time.tv_nsec / back_enhacer) % 10;
-        
+
         // Note:  a possible overflow may happen here with large denominators
         if (reminder > 200000000)
         {
@@ -460,12 +464,12 @@ static inline fosa_rel_time_t fosa_rel_time_divided_by_integer(fosa_rel_time_t t
             abort();
         }
         next_dividend = reminder * 10 + next_numeral;
-        
+
         result.tv_nsec += (next_dividend / divider) * back_enhacer;
         reminder = next_dividend % divider;
     } while (back_enhacer > 1);
 
-    
+
     return result;
 }