Added suppor /and fix things for SunOS port

git-svn-id: https://svn.pjsip.org/repos/pjproject/main@2 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjlib/src/pj/os_timestamp_linux.c b/pjlib/src/pj/os_timestamp_linux.c
index 52639dc..ee94e6e 100644
--- a/pjlib/src/pj/os_timestamp_linux.c
+++ b/pjlib/src/pj/os_timestamp_linux.c
@@ -1,137 +1,137 @@
-/* $Header: /pjproject-0.3/pjlib/src/pj/os_timestamp_linux.c 4     10/29/05 10:27p Bennylp $ */

-/* $Log: /pjproject-0.3/pjlib/src/pj/os_timestamp_linux.c $

- * 

- * 4     10/29/05 10:27p Bennylp

- * Fixed misc warnings.

- * 

- * 3     10/29/05 11:51a Bennylp

- * Version 0.3-pre2.

- * 

- * 2     9/21/05 1:39p Bennylp

- * Periodic checkin for backup.

- * 

- * 1     9/18/05 9:25p Bennylp

- * Created.

- * 

- */

-#include <pj/os.h>

-#include <pj/errno.h>

-#include <stdio.h>

-#include <string.h>

-#include <stdlib.h>

-#include <ctype.h>

-

-#if defined(PJ_HAS_PENTIUM) && PJ_HAS_PENTIUM!=0

-static int machine_speed_mhz;

-static pj_timestamp machine_speed;

-

-static __inline__ unsigned long long int rdtsc()

-{

-    unsigned long long int x;

-    __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));

-    return x;

-}

-

-/* Determine machine's CPU MHz to get the counter's frequency.

- */

-static int get_machine_speed_mhz()

-{

-    FILE *strm;

-    char buf[512];

-    int len;

-    char *pos, *end;

-	

-    PJ_CHECK_STACK();

-	

-    /* Open /proc/cpuinfo and read the file */

-    strm = fopen("/proc/cpuinfo", "r");

-    if (!strm)

-        return -1;

-    len = fread(buf, 1, sizeof(buf), strm);

-    fclose(strm);

-    if (len < 1) {

-        return -1;

-    }

-    buf[len] = '\0';

-

-    /* Locate the MHz digit. */

-    pos = strstr(buf, "cpu MHz");

-    if (!pos)

-        return -1;

-    pos = strchr(pos, ':');

-    if (!pos)

-        return -1;

-    end = (pos += 2);

-    while (isdigit(*end)) ++end;

-    *end = '\0';

-

-    /* Return the Mhz part, and give it a +1. */

-    return atoi(pos)+1;

-}

-

-PJ_DEF(pj_status_t) pj_get_timestamp(pj_timestamp *ts)

-{

-    if (machine_speed_mhz == 0) {

-	machine_speed_mhz = get_machine_speed_mhz();

-	if (machine_speed_mhz > 0) {

-	    machine_speed.u64 = machine_speed_mhz * 1000000.0;

-	}

-    }

-    

-    if (machine_speed_mhz == -1) {

-	ts->u64 = 0;

-	return -1;

-    } 

-    ts->u64 = rdtsc();

-    return 0;

-}

-

-PJ_DEF(pj_status_t) pj_get_timestamp_freq(pj_timestamp *freq)

-{

-    if (machine_speed_mhz == 0) {

-	machine_speed_mhz = get_machine_speed_mhz();

-	if (machine_speed_mhz > 0) {

-	    machine_speed.u64 = machine_speed_mhz * 1000000.0;

-	}

-    }

-    

-    if (machine_speed_mhz == -1) {

-	freq->u64 = 1;	/* return 1 to prevent division by zero in apps. */

-	return -1;

-    } 

-

-    freq->u64 = machine_speed.u64;

-    return 0;

-}

-

-#else

-#include <sys/time.h>

-#include <errno.h>

-

-#define USEC_PER_SEC	1000000

-

-PJ_DEF(pj_status_t) pj_get_timestamp(pj_timestamp *ts)

-{

-    struct timeval tv;

-

-    if (gettimeofday(&tv, NULL) != 0) {

-	return PJ_RETURN_OS_ERROR(pj_get_native_os_error());

-    }

-

-    ts->u64 = tv.tv_sec;

-    ts->u64 *= USEC_PER_SEC;

-    ts->u64 += tv.tv_usec;

-

-    return PJ_SUCCESS;

-}

-

-PJ_DEF(pj_status_t) pj_get_timestamp_freq(pj_timestamp *freq)

-{

-    freq->u32.hi = 0;

-    freq->u32.lo = USEC_PER_SEC;

-

-    return PJ_SUCCESS;

-}

-

-#endif

-

+/* $Header: /pjproject-0.3/pjlib/src/pj/os_timestamp_linux.c 4     10/29/05 10:27p Bennylp $ */
+/* $Log: /pjproject-0.3/pjlib/src/pj/os_timestamp_linux.c $
+ * 
+ * 4     10/29/05 10:27p Bennylp
+ * Fixed misc warnings.
+ * 
+ * 3     10/29/05 11:51a Bennylp
+ * Version 0.3-pre2.
+ * 
+ * 2     9/21/05 1:39p Bennylp
+ * Periodic checkin for backup.
+ * 
+ * 1     9/18/05 9:25p Bennylp
+ * Created.
+ * 
+ */
+#include <pj/os.h>
+#include <pj/errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+#if defined(PJ_HAS_PENTIUM) && PJ_HAS_PENTIUM!=0
+static int machine_speed_mhz;
+static pj_timestamp machine_speed;
+
+static __inline__ unsigned long long int rdtsc()
+{
+    unsigned long long int x;
+    __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
+    return x;
+}
+
+/* Determine machine's CPU MHz to get the counter's frequency.
+ */
+static int get_machine_speed_mhz()
+{
+    FILE *strm;
+    char buf[512];
+    int len;
+    char *pos, *end;
+	
+    PJ_CHECK_STACK();
+	
+    /* Open /proc/cpuinfo and read the file */
+    strm = fopen("/proc/cpuinfo", "r");
+    if (!strm)
+        return -1;
+    len = fread(buf, 1, sizeof(buf), strm);
+    fclose(strm);
+    if (len < 1) {
+        return -1;
+    }
+    buf[len] = '\0';
+
+    /* Locate the MHz digit. */
+    pos = strstr(buf, "cpu MHz");
+    if (!pos)
+        return -1;
+    pos = strchr(pos, ':');
+    if (!pos)
+        return -1;
+    end = (pos += 2);
+    while (isdigit(*end)) ++end;
+    *end = '\0';
+
+    /* Return the Mhz part, and give it a +1. */
+    return atoi(pos)+1;
+}
+
+PJ_DEF(pj_status_t) pj_get_timestamp(pj_timestamp *ts)
+{
+    if (machine_speed_mhz == 0) {
+	machine_speed_mhz = get_machine_speed_mhz();
+	if (machine_speed_mhz > 0) {
+	    machine_speed.u64 = machine_speed_mhz * 1000000.0;
+	}
+    }
+    
+    if (machine_speed_mhz == -1) {
+	ts->u64 = 0;
+	return -1;
+    } 
+    ts->u64 = rdtsc();
+    return 0;
+}
+
+PJ_DEF(pj_status_t) pj_get_timestamp_freq(pj_timestamp *freq)
+{
+    if (machine_speed_mhz == 0) {
+	machine_speed_mhz = get_machine_speed_mhz();
+	if (machine_speed_mhz > 0) {
+	    machine_speed.u64 = machine_speed_mhz * 1000000.0;
+	}
+    }
+    
+    if (machine_speed_mhz == -1) {
+	freq->u64 = 1;	/* return 1 to prevent division by zero in apps. */
+	return -1;
+    } 
+
+    freq->u64 = machine_speed.u64;
+    return 0;
+}
+
+#else
+#include <sys/time.h>
+#include <errno.h>
+
+#define USEC_PER_SEC	1000000
+
+PJ_DEF(pj_status_t) pj_get_timestamp(pj_timestamp *ts)
+{
+    struct timeval tv;
+
+    if (gettimeofday(&tv, NULL) != 0) {
+	return PJ_RETURN_OS_ERROR(pj_get_native_os_error());
+    }
+
+    ts->u64 = tv.tv_sec;
+    ts->u64 *= USEC_PER_SEC;
+    ts->u64 += tv.tv_usec;
+
+    return PJ_SUCCESS;
+}
+
+PJ_DEF(pj_status_t) pj_get_timestamp_freq(pj_timestamp *freq)
+{
+    freq->u32.hi = 0;
+    freq->u32.lo = USEC_PER_SEC;
+
+    return PJ_SUCCESS;
+}
+
+#endif
+