Index: /trunk/include/iprt/time.h
===================================================================
--- /trunk/include/iprt/time.h	(revision 54774)
+++ /trunk/include/iprt/time.h	(revision 54775)
@@ -93,5 +93,5 @@
 DECLINLINE(int64_t) RTTimeSpecGetMicro(PCRTTIMESPEC pTime)
 {
-    return pTime->i64NanosecondsRelativeToUnixEpoch / 1000;
+    return pTime->i64NanosecondsRelativeToUnixEpoch / RT_NS_1US;
 }
 
@@ -106,5 +106,5 @@
 DECLINLINE(PRTTIMESPEC) RTTimeSpecSetMicro(PRTTIMESPEC pTime, int64_t i64Micro)
 {
-    pTime->i64NanosecondsRelativeToUnixEpoch = i64Micro * 1000;
+    pTime->i64NanosecondsRelativeToUnixEpoch = i64Micro * RT_NS_1US;
     return pTime;
 }
@@ -119,5 +119,5 @@
 DECLINLINE(int64_t) RTTimeSpecGetMilli(PCRTTIMESPEC pTime)
 {
-    return pTime->i64NanosecondsRelativeToUnixEpoch / 1000000;
+    return pTime->i64NanosecondsRelativeToUnixEpoch / RT_NS_1MS;
 }
 
@@ -132,5 +132,5 @@
 DECLINLINE(PRTTIMESPEC) RTTimeSpecSetMilli(PRTTIMESPEC pTime, int64_t i64Milli)
 {
-    pTime->i64NanosecondsRelativeToUnixEpoch = i64Milli * 1000000;
+    pTime->i64NanosecondsRelativeToUnixEpoch = i64Milli * RT_NS_1MS;
     return pTime;
 }
@@ -145,5 +145,5 @@
 DECLINLINE(int64_t) RTTimeSpecGetSeconds(PCRTTIMESPEC pTime)
 {
-    return pTime->i64NanosecondsRelativeToUnixEpoch / 1000000000;
+    return pTime->i64NanosecondsRelativeToUnixEpoch / RT_NS_1SEC;
 }
 
@@ -158,5 +158,5 @@
 DECLINLINE(PRTTIMESPEC) RTTimeSpecSetSeconds(PRTTIMESPEC pTime, int64_t i64Seconds)
 {
-    pTime->i64NanosecondsRelativeToUnixEpoch = i64Seconds * 1000000000;
+    pTime->i64NanosecondsRelativeToUnixEpoch = i64Seconds * RT_NS_1SEC;
     return pTime;
 }
@@ -227,5 +227,5 @@
 DECLINLINE(PRTTIMESPEC) RTTimeSpecAddMicro(PRTTIMESPEC pTime, int64_t i64Micro)
 {
-    pTime->i64NanosecondsRelativeToUnixEpoch += i64Micro * 1000;
+    pTime->i64NanosecondsRelativeToUnixEpoch += i64Micro * RT_NS_1US;
     return pTime;
 }
@@ -241,5 +241,5 @@
 DECLINLINE(PRTTIMESPEC) RTTimeSpecAddMilli(PRTTIMESPEC pTime, int64_t i64Milli)
 {
-    pTime->i64NanosecondsRelativeToUnixEpoch += i64Milli * 1000000;
+    pTime->i64NanosecondsRelativeToUnixEpoch += i64Milli * RT_NS_1MS;
     return pTime;
 }
@@ -255,5 +255,5 @@
 DECLINLINE(PRTTIMESPEC) RTTimeSpecAddSeconds(PRTTIMESPEC pTime, int64_t i64Seconds)
 {
-    pTime->i64NanosecondsRelativeToUnixEpoch += i64Seconds * 1000000000;
+    pTime->i64NanosecondsRelativeToUnixEpoch += i64Seconds * RT_NS_1SEC;
     return pTime;
 }
@@ -297,5 +297,5 @@
 DECLINLINE(PRTTIMESPEC) RTTimeSpecSubMicro(PRTTIMESPEC pTime, int64_t i64Micro)
 {
-    pTime->i64NanosecondsRelativeToUnixEpoch -= i64Micro * 1000;
+    pTime->i64NanosecondsRelativeToUnixEpoch -= i64Micro * RT_NS_1US;
     return pTime;
 }
@@ -311,5 +311,5 @@
 DECLINLINE(PRTTIMESPEC) RTTimeSpecSubMilli(PRTTIMESPEC pTime, int64_t i64Milli)
 {
-    pTime->i64NanosecondsRelativeToUnixEpoch -= i64Milli * 1000000;
+    pTime->i64NanosecondsRelativeToUnixEpoch -= i64Milli * RT_NS_1MS;
     return pTime;
 }
@@ -325,6 +325,29 @@
 DECLINLINE(PRTTIMESPEC) RTTimeSpecSubSeconds(PRTTIMESPEC pTime, int64_t i64Seconds)
 {
-    pTime->i64NanosecondsRelativeToUnixEpoch -= i64Seconds * 100000000;
-    return pTime;
+    pTime->i64NanosecondsRelativeToUnixEpoch -= i64Seconds * RT_NS_1SEC;
+    return pTime;
+}
+
+
+/**
+ * Gives the time in seconds and nanoseconds.
+ *
+ * @returns pTime.
+ * @param   pTime           The time spec to interpret.
+ * @param   *pi32Seconds    Where to store the time period in seconds.
+ * @param   *pi32Nano       Where to store the time period in nanoseconds.
+ */
+DECLINLINE(void) RTTimeSpecGetSecondsAndNano(PRTTIMESPEC pTime, int32_t *pi32Seconds, int32_t *pi32Nano)
+{
+    int64_t i64 = RTTimeSpecGetNano(pTime);
+    int32_t i32Nano = (int32_t)(i64 % RT_NS_1SEC);
+    i64 /= RT_NS_1SEC;
+    if (i32Nano < 0)
+    {
+        i32Nano += RT_NS_1SEC;
+        i64--;
+    }
+    *pi32Seconds = (int32_t)i64;
+    *pi32Nano    = i32Nano;
 }
 
@@ -342,9 +365,9 @@
 {
     int64_t i64 = RTTimeSpecGetMicro(pTime);
-    int32_t i32Micro = (int32_t)(i64 % 1000000);
-    i64 /= 1000000;
+    int32_t i32Micro = (int32_t)(i64 % RT_US_1SEC);
+    i64 /= RT_US_1SEC;
     if (i32Micro < 0)
     {
-        i32Micro += 1000000;
+        i32Micro += RT_US_1SEC;
         i64--;
     }
@@ -380,9 +403,9 @@
 {
     int64_t i64 = RTTimeSpecGetNano(pTime);
-    int32_t i32Nano = (int32_t)(i64 % 1000000000);
-    i64 /= 1000000000;
+    int32_t i32Nano = (int32_t)(i64 % RT_NS_1SEC);
+    i64 /= RT_NS_1SEC;
     if (i32Nano < 0)
     {
-        i32Nano += 1000000000;
+        i32Nano += RT_NS_1SEC;
         i64--;
     }
@@ -482,5 +505,5 @@
 {
     return (pTime->i64NanosecondsRelativeToUnixEpoch - RTTIME_OFFSET_DOS_TIME)
-        / 1000000000;
+        / RT_NS_1SEC;
 }
 
@@ -495,5 +518,5 @@
 DECLINLINE(PRTTIMESPEC) RTTimeSpecSetDosSeconds(PRTTIMESPEC pTime, int64_t i64Seconds)
 {
-    pTime->i64NanosecondsRelativeToUnixEpoch = i64Seconds * 1000000000
+    pTime->i64NanosecondsRelativeToUnixEpoch = i64Seconds * RT_NS_1SEC
         + RTTIME_OFFSET_DOS_TIME;
     return pTime;
