Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 13 Sep 2012 12:47:22 GMT
From:      svn-freebsd-gecko@chruetertee.ch
To:        freebsd-gecko@freebsd.org
Subject:   [SVN-Commit] r1014 - in trunk: mail/thunderbird-esr/files mail/thunderbird/files www/firefox-esr/files www/firefox-nightly/files www/firefox/files www/libxul-esr/files www/libxul/files www/seamonkey/files
Message-ID:  <201209131247.q8DClMbK077674@trillian.chruetertee.ch>

next in thread | raw e-mail | index | archive | help
Author: jbeich
Date: Thu Sep 13 12:47:21 2012
New Revision: 1014

Log:
sync with bug 789693

Modified:
   trunk/mail/thunderbird-esr/files/patch-bug789693
   trunk/mail/thunderbird/files/patch-bug789693
   trunk/www/firefox-esr/files/patch-bug789693
   trunk/www/firefox-nightly/files/patch-bug789693
   trunk/www/firefox/files/patch-bug789693
   trunk/www/libxul-esr/files/patch-bug789693
   trunk/www/libxul/files/patch-bug789693
   trunk/www/seamonkey/files/patch-bug789693

Modified: trunk/mail/thunderbird-esr/files/patch-bug789693
==============================================================================
--- trunk/mail/thunderbird-esr/files/patch-bug789693	Thu Sep 13 12:47:10 2012	(r1013)
+++ trunk/mail/thunderbird-esr/files/patch-bug789693	Thu Sep 13 12:47:21 2012	(r1014)
@@ -1,6 +1,6 @@
 --- mozilla/toolkit/components/startup/nsAppStartup.cpp
 +++ mozilla/toolkit/components/startup/nsAppStartup.cpp
-@@ -50,13 +50,14 @@
+@@ -50,17 +50,40 @@
  #include <sys/syscall.h>
  #endif
  
@@ -19,7 +19,33 @@
  #endif
  
  #include "mozilla/Telemetry.h"
-@@ -836,41 +837,56 @@ CalculateProcessCreationTimestamp()
+ 
++#if defined(__NetBSD__)
++#undef KERN_PROC
++#define KERN_PROC KERN_PROC2
++#define KINFO_PROC struct kinfo_proc2
++#else
++#define KINFO_PROC struct kinfo_proc
++#endif
++
++#if defined(XP_MACOSX)
++#define KP_START_SEC kp_proc.p_un.__p_starttime.tv_sec
++#define KP_START_USEC kp_proc.p_un.__p_starttime.tv_usec
++#elif defined(__DragonFly__)
++#define KP_START_SEC kp_start.tv_sec
++#define KP_START_USEC kp_start.tv_usec
++#elif defined(__FreeBSD__)
++#define KP_START_SEC ki_start.tv_sec
++#define KP_START_USEC ki_start.tv_usec
++#else
++#define KP_START_SEC p_ustart_sec
++#define KP_START_USEC p_ustart_usec
++#endif
++
+ static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID);
+ 
+ using namespace mozilla;
+@@ -836,42 +859,30 @@ CalculateProcessCreationTimestamp()
  #endif
    return timestamp;
  }
@@ -29,41 +55,29 @@
  static PRTime
  CalculateProcessCreationTimestamp()
  {
-+#if defined(__NetBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC2, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc2), 1 };
-+#elif defined(__OpenBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
-+#else
-   int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
-+#endif
-   size_t buffer_size;
-+
+-  int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
+-  size_t buffer_size;
+-  if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
+-    return 0;
++  int mib[] = {
++    CTL_KERN,
++    KERN_PROC,
++    KERN_PROC_PID,
++    getpid(),
 +#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
-+#else
-   if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
++    sizeof(KINFO_PROC),
++    1,
 +#endif
-     return 0;
++  };
++  u_int miblen = sizeof(mib) / sizeof(mib[0]);
  
 -  struct kinfo_proc *proc = (kinfo_proc*) malloc(buffer_size);  
-+#if defined(__NetBSD__)
-+  struct kinfo_proc2 *proc = (struct kinfo_proc2 *) malloc(buffer_size);
-+#else
-+  struct kinfo_proc *proc = (struct kinfo_proc *) malloc(buffer_size);
-+#endif
-+
-+#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
-+#else
-   if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
-+#endif
-     free(proc);
-     return 0;
-   }
-+
-+#if defined(XP_MACOSX)
-   PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
-   starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
+-  if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
+-    free(proc);
+-    return 0;
+-  }
+-  PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
 -  free(proc);
 -  return starttime;
 -}
@@ -74,24 +88,21 @@
 -  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
 -  size_t buffer_size;
 -  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
--    return 0;
--
++  KINFO_PROC proc;
++  size_t buffer_size = sizeof(proc);
++  if (sysctl(mib, miblen, &proc, &buffer_size, NULL, 0))
+     return 0;
+ 
 -  struct kinfo_proc *proc = (struct kinfo_proc*) malloc(buffer_size);
 -  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
 -    free(proc);
 -    return 0;
 -  }
-+#elif defined(__DragonFly__)
-+  PRTime starttime = static_cast<PRTime>(proc->kp_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->kp_start.tv_usec;
-+#elif defined(__FreeBSD__)
-+  PRTime starttime = static_cast<PRTime>(proc->ki_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->ki_start.tv_usec;
-+#else
-   PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
-   starttime += proc->p_ustart_usec;
-+#endif
-+
-   free(proc);
+-  PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->p_ustart_usec;
+-  free(proc);
++  PRTime starttime = static_cast<PRTime>(proc.KP_START_SEC) * PR_USEC_PER_SEC;
++  starttime += proc.KP_START_USEC;
    return starttime;
  }
+ #else

Modified: trunk/mail/thunderbird/files/patch-bug789693
==============================================================================
--- trunk/mail/thunderbird/files/patch-bug789693	Thu Sep 13 12:47:10 2012	(r1013)
+++ trunk/mail/thunderbird/files/patch-bug789693	Thu Sep 13 12:47:21 2012	(r1014)
@@ -1,6 +1,6 @@
 --- mozilla/toolkit/components/startup/nsAppStartup.cpp
 +++ mozilla/toolkit/components/startup/nsAppStartup.cpp
-@@ -50,13 +50,14 @@
+@@ -50,18 +50,41 @@
  #include <sys/syscall.h>
  #endif
  
@@ -19,7 +19,34 @@
  #endif
  
  #include "mozilla/Telemetry.h"
-@@ -836,41 +837,56 @@ CalculateProcessCreationTimestamp()
+ #include "mozilla/StartupTimeline.h"
+ 
++#if defined(__NetBSD__)
++#undef KERN_PROC
++#define KERN_PROC KERN_PROC2
++#define KINFO_PROC struct kinfo_proc2
++#else
++#define KINFO_PROC struct kinfo_proc
++#endif
++
++#if defined(XP_MACOSX)
++#define KP_START_SEC kp_proc.p_un.__p_starttime.tv_sec
++#define KP_START_USEC kp_proc.p_un.__p_starttime.tv_usec
++#elif defined(__DragonFly__)
++#define KP_START_SEC kp_start.tv_sec
++#define KP_START_USEC kp_start.tv_usec
++#elif defined(__FreeBSD__)
++#define KP_START_SEC ki_start.tv_sec
++#define KP_START_USEC ki_start.tv_usec
++#else
++#define KP_START_SEC p_ustart_sec
++#define KP_START_USEC p_ustart_usec
++#endif
++
+ static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID);
+ 
+ #define kPrefLastSuccess "toolkit.startup.last_success"
+@@ -836,42 +859,30 @@ CalculateProcessCreationTimestamp()
  #endif
    return timestamp;
  }
@@ -29,41 +56,29 @@
  static PRTime
  CalculateProcessCreationTimestamp()
  {
-+#if defined(__NetBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC2, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc2), 1 };
-+#elif defined(__OpenBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
-+#else
-   int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
-+#endif
-   size_t buffer_size;
-+
+-  int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
+-  size_t buffer_size;
+-  if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
+-    return 0;
++  int mib[] = {
++    CTL_KERN,
++    KERN_PROC,
++    KERN_PROC_PID,
++    getpid(),
 +#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
-+#else
-   if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
++    sizeof(KINFO_PROC),
++    1,
 +#endif
-     return 0;
++  };
++  u_int miblen = sizeof(mib) / sizeof(mib[0]);
  
 -  struct kinfo_proc *proc = (kinfo_proc*) malloc(buffer_size);  
-+#if defined(__NetBSD__)
-+  struct kinfo_proc2 *proc = (struct kinfo_proc2 *) malloc(buffer_size);
-+#else
-+  struct kinfo_proc *proc = (struct kinfo_proc *) malloc(buffer_size);
-+#endif
-+
-+#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
-+#else
-   if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
-+#endif
-     free(proc);
-     return 0;
-   }
-+
-+#if defined(XP_MACOSX)
-   PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
-   starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
+-  if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
+-    free(proc);
+-    return 0;
+-  }
+-  PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
 -  free(proc);
 -  return starttime;
 -}
@@ -74,24 +89,21 @@
 -  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
 -  size_t buffer_size;
 -  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
--    return 0;
--
++  KINFO_PROC proc;
++  size_t buffer_size = sizeof(proc);
++  if (sysctl(mib, miblen, &proc, &buffer_size, NULL, 0))
+     return 0;
+ 
 -  struct kinfo_proc *proc = (struct kinfo_proc*) malloc(buffer_size);
 -  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
 -    free(proc);
 -    return 0;
 -  }
-+#elif defined(__DragonFly__)
-+  PRTime starttime = static_cast<PRTime>(proc->kp_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->kp_start.tv_usec;
-+#elif defined(__FreeBSD__)
-+  PRTime starttime = static_cast<PRTime>(proc->ki_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->ki_start.tv_usec;
-+#else
-   PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
-   starttime += proc->p_ustart_usec;
-+#endif
-+
-   free(proc);
+-  PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->p_ustart_usec;
+-  free(proc);
++  PRTime starttime = static_cast<PRTime>(proc.KP_START_SEC) * PR_USEC_PER_SEC;
++  starttime += proc.KP_START_USEC;
    return starttime;
  }
+ #else

Modified: trunk/www/firefox-esr/files/patch-bug789693
==============================================================================
--- trunk/www/firefox-esr/files/patch-bug789693	Thu Sep 13 12:47:10 2012	(r1013)
+++ trunk/www/firefox-esr/files/patch-bug789693	Thu Sep 13 12:47:21 2012	(r1014)
@@ -1,6 +1,6 @@
 --- toolkit/components/startup/nsAppStartup.cpp
 +++ toolkit/components/startup/nsAppStartup.cpp
-@@ -50,13 +50,14 @@
+@@ -50,17 +50,40 @@
  #include <sys/syscall.h>
  #endif
  
@@ -19,7 +19,33 @@
  #endif
  
  #include "mozilla/Telemetry.h"
-@@ -836,41 +837,56 @@ CalculateProcessCreationTimestamp()
+ 
++#if defined(__NetBSD__)
++#undef KERN_PROC
++#define KERN_PROC KERN_PROC2
++#define KINFO_PROC struct kinfo_proc2
++#else
++#define KINFO_PROC struct kinfo_proc
++#endif
++
++#if defined(XP_MACOSX)
++#define KP_START_SEC kp_proc.p_un.__p_starttime.tv_sec
++#define KP_START_USEC kp_proc.p_un.__p_starttime.tv_usec
++#elif defined(__DragonFly__)
++#define KP_START_SEC kp_start.tv_sec
++#define KP_START_USEC kp_start.tv_usec
++#elif defined(__FreeBSD__)
++#define KP_START_SEC ki_start.tv_sec
++#define KP_START_USEC ki_start.tv_usec
++#else
++#define KP_START_SEC p_ustart_sec
++#define KP_START_USEC p_ustart_usec
++#endif
++
+ static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID);
+ 
+ using namespace mozilla;
+@@ -836,42 +859,30 @@ CalculateProcessCreationTimestamp()
  #endif
    return timestamp;
  }
@@ -29,41 +55,29 @@
  static PRTime
  CalculateProcessCreationTimestamp()
  {
-+#if defined(__NetBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC2, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc2), 1 };
-+#elif defined(__OpenBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
-+#else
-   int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
-+#endif
-   size_t buffer_size;
-+
+-  int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
+-  size_t buffer_size;
+-  if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
+-    return 0;
++  int mib[] = {
++    CTL_KERN,
++    KERN_PROC,
++    KERN_PROC_PID,
++    getpid(),
 +#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
-+#else
-   if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
++    sizeof(KINFO_PROC),
++    1,
 +#endif
-     return 0;
++  };
++  u_int miblen = sizeof(mib) / sizeof(mib[0]);
  
 -  struct kinfo_proc *proc = (kinfo_proc*) malloc(buffer_size);  
-+#if defined(__NetBSD__)
-+  struct kinfo_proc2 *proc = (struct kinfo_proc2 *) malloc(buffer_size);
-+#else
-+  struct kinfo_proc *proc = (struct kinfo_proc *) malloc(buffer_size);
-+#endif
-+
-+#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
-+#else
-   if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
-+#endif
-     free(proc);
-     return 0;
-   }
-+
-+#if defined(XP_MACOSX)
-   PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
-   starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
+-  if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
+-    free(proc);
+-    return 0;
+-  }
+-  PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
 -  free(proc);
 -  return starttime;
 -}
@@ -74,24 +88,21 @@
 -  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
 -  size_t buffer_size;
 -  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
--    return 0;
--
++  KINFO_PROC proc;
++  size_t buffer_size = sizeof(proc);
++  if (sysctl(mib, miblen, &proc, &buffer_size, NULL, 0))
+     return 0;
+ 
 -  struct kinfo_proc *proc = (struct kinfo_proc*) malloc(buffer_size);
 -  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
 -    free(proc);
 -    return 0;
 -  }
-+#elif defined(__DragonFly__)
-+  PRTime starttime = static_cast<PRTime>(proc->kp_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->kp_start.tv_usec;
-+#elif defined(__FreeBSD__)
-+  PRTime starttime = static_cast<PRTime>(proc->ki_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->ki_start.tv_usec;
-+#else
-   PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
-   starttime += proc->p_ustart_usec;
-+#endif
-+
-   free(proc);
+-  PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->p_ustart_usec;
+-  free(proc);
++  PRTime starttime = static_cast<PRTime>(proc.KP_START_SEC) * PR_USEC_PER_SEC;
++  starttime += proc.KP_START_USEC;
    return starttime;
  }
+ #else

Modified: trunk/www/firefox-nightly/files/patch-bug789693
==============================================================================
--- trunk/www/firefox-nightly/files/patch-bug789693	Thu Sep 13 12:47:10 2012	(r1013)
+++ trunk/www/firefox-nightly/files/patch-bug789693	Thu Sep 13 12:47:21 2012	(r1014)
@@ -1,6 +1,6 @@
 --- toolkit/components/startup/nsAppStartup.cpp
 +++ toolkit/components/startup/nsAppStartup.cpp
-@@ -50,13 +50,14 @@
+@@ -50,18 +50,41 @@
  #include <sys/syscall.h>
  #endif
  
@@ -19,7 +19,34 @@
  #endif
  
  #include "mozilla/Telemetry.h"
-@@ -836,41 +837,56 @@ CalculateProcessCreationTimestamp()
+ #include "mozilla/StartupTimeline.h"
+ 
++#if defined(__NetBSD__)
++#undef KERN_PROC
++#define KERN_PROC KERN_PROC2
++#define KINFO_PROC struct kinfo_proc2
++#else
++#define KINFO_PROC struct kinfo_proc
++#endif
++
++#if defined(XP_MACOSX)
++#define KP_START_SEC kp_proc.p_un.__p_starttime.tv_sec
++#define KP_START_USEC kp_proc.p_un.__p_starttime.tv_usec
++#elif defined(__DragonFly__)
++#define KP_START_SEC kp_start.tv_sec
++#define KP_START_USEC kp_start.tv_usec
++#elif defined(__FreeBSD__)
++#define KP_START_SEC ki_start.tv_sec
++#define KP_START_USEC ki_start.tv_usec
++#else
++#define KP_START_SEC p_ustart_sec
++#define KP_START_USEC p_ustart_usec
++#endif
++
+ static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID);
+ 
+ #define kPrefLastSuccess "toolkit.startup.last_success"
+@@ -836,42 +859,30 @@ CalculateProcessCreationTimestamp()
  #endif
    return timestamp;
  }
@@ -29,41 +56,29 @@
  static PRTime
  CalculateProcessCreationTimestamp()
  {
-+#if defined(__NetBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC2, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc2), 1 };
-+#elif defined(__OpenBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
-+#else
-   int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
-+#endif
-   size_t buffer_size;
-+
+-  int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
+-  size_t buffer_size;
+-  if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
+-    return 0;
++  int mib[] = {
++    CTL_KERN,
++    KERN_PROC,
++    KERN_PROC_PID,
++    getpid(),
 +#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
-+#else
-   if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
++    sizeof(KINFO_PROC),
++    1,
 +#endif
-     return 0;
++  };
++  u_int miblen = sizeof(mib) / sizeof(mib[0]);
  
 -  struct kinfo_proc *proc = (kinfo_proc*) malloc(buffer_size);  
-+#if defined(__NetBSD__)
-+  struct kinfo_proc2 *proc = (struct kinfo_proc2 *) malloc(buffer_size);
-+#else
-+  struct kinfo_proc *proc = (struct kinfo_proc *) malloc(buffer_size);
-+#endif
-+
-+#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
-+#else
-   if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
-+#endif
-     free(proc);
-     return 0;
-   }
-+
-+#if defined(XP_MACOSX)
-   PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
-   starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
+-  if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
+-    free(proc);
+-    return 0;
+-  }
+-  PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
 -  free(proc);
 -  return starttime;
 -}
@@ -74,24 +89,21 @@
 -  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
 -  size_t buffer_size;
 -  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
--    return 0;
--
++  KINFO_PROC proc;
++  size_t buffer_size = sizeof(proc);
++  if (sysctl(mib, miblen, &proc, &buffer_size, NULL, 0))
+     return 0;
+ 
 -  struct kinfo_proc *proc = (struct kinfo_proc*) malloc(buffer_size);
 -  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
 -    free(proc);
 -    return 0;
 -  }
-+#elif defined(__DragonFly__)
-+  PRTime starttime = static_cast<PRTime>(proc->kp_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->kp_start.tv_usec;
-+#elif defined(__FreeBSD__)
-+  PRTime starttime = static_cast<PRTime>(proc->ki_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->ki_start.tv_usec;
-+#else
-   PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
-   starttime += proc->p_ustart_usec;
-+#endif
-+
-   free(proc);
+-  PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->p_ustart_usec;
+-  free(proc);
++  PRTime starttime = static_cast<PRTime>(proc.KP_START_SEC) * PR_USEC_PER_SEC;
++  starttime += proc.KP_START_USEC;
    return starttime;
  }
+ #else

Modified: trunk/www/firefox/files/patch-bug789693
==============================================================================
--- trunk/www/firefox/files/patch-bug789693	Thu Sep 13 12:47:10 2012	(r1013)
+++ trunk/www/firefox/files/patch-bug789693	Thu Sep 13 12:47:21 2012	(r1014)
@@ -1,6 +1,6 @@
 --- toolkit/components/startup/nsAppStartup.cpp
 +++ toolkit/components/startup/nsAppStartup.cpp
-@@ -50,13 +50,14 @@
+@@ -50,18 +50,41 @@
  #include <sys/syscall.h>
  #endif
  
@@ -19,7 +19,34 @@
  #endif
  
  #include "mozilla/Telemetry.h"
-@@ -836,41 +837,56 @@ CalculateProcessCreationTimestamp()
+ #include "mozilla/StartupTimeline.h"
+ 
++#if defined(__NetBSD__)
++#undef KERN_PROC
++#define KERN_PROC KERN_PROC2
++#define KINFO_PROC struct kinfo_proc2
++#else
++#define KINFO_PROC struct kinfo_proc
++#endif
++
++#if defined(XP_MACOSX)
++#define KP_START_SEC kp_proc.p_un.__p_starttime.tv_sec
++#define KP_START_USEC kp_proc.p_un.__p_starttime.tv_usec
++#elif defined(__DragonFly__)
++#define KP_START_SEC kp_start.tv_sec
++#define KP_START_USEC kp_start.tv_usec
++#elif defined(__FreeBSD__)
++#define KP_START_SEC ki_start.tv_sec
++#define KP_START_USEC ki_start.tv_usec
++#else
++#define KP_START_SEC p_ustart_sec
++#define KP_START_USEC p_ustart_usec
++#endif
++
+ static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID);
+ 
+ #define kPrefLastSuccess "toolkit.startup.last_success"
+@@ -836,42 +859,30 @@ CalculateProcessCreationTimestamp()
  #endif
    return timestamp;
  }
@@ -29,41 +56,29 @@
  static PRTime
  CalculateProcessCreationTimestamp()
  {
-+#if defined(__NetBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC2, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc2), 1 };
-+#elif defined(__OpenBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
-+#else
-   int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
-+#endif
-   size_t buffer_size;
-+
+-  int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
+-  size_t buffer_size;
+-  if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
+-    return 0;
++  int mib[] = {
++    CTL_KERN,
++    KERN_PROC,
++    KERN_PROC_PID,
++    getpid(),
 +#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
-+#else
-   if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
++    sizeof(KINFO_PROC),
++    1,
 +#endif
-     return 0;
++  };
++  u_int miblen = sizeof(mib) / sizeof(mib[0]);
  
 -  struct kinfo_proc *proc = (kinfo_proc*) malloc(buffer_size);  
-+#if defined(__NetBSD__)
-+  struct kinfo_proc2 *proc = (struct kinfo_proc2 *) malloc(buffer_size);
-+#else
-+  struct kinfo_proc *proc = (struct kinfo_proc *) malloc(buffer_size);
-+#endif
-+
-+#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
-+#else
-   if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
-+#endif
-     free(proc);
-     return 0;
-   }
-+
-+#if defined(XP_MACOSX)
-   PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
-   starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
+-  if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
+-    free(proc);
+-    return 0;
+-  }
+-  PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
 -  free(proc);
 -  return starttime;
 -}
@@ -74,24 +89,21 @@
 -  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
 -  size_t buffer_size;
 -  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
--    return 0;
--
++  KINFO_PROC proc;
++  size_t buffer_size = sizeof(proc);
++  if (sysctl(mib, miblen, &proc, &buffer_size, NULL, 0))
+     return 0;
+ 
 -  struct kinfo_proc *proc = (struct kinfo_proc*) malloc(buffer_size);
 -  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
 -    free(proc);
 -    return 0;
 -  }
-+#elif defined(__DragonFly__)
-+  PRTime starttime = static_cast<PRTime>(proc->kp_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->kp_start.tv_usec;
-+#elif defined(__FreeBSD__)
-+  PRTime starttime = static_cast<PRTime>(proc->ki_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->ki_start.tv_usec;
-+#else
-   PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
-   starttime += proc->p_ustart_usec;
-+#endif
-+
-   free(proc);
+-  PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->p_ustart_usec;
+-  free(proc);
++  PRTime starttime = static_cast<PRTime>(proc.KP_START_SEC) * PR_USEC_PER_SEC;
++  starttime += proc.KP_START_USEC;
    return starttime;
  }
+ #else

Modified: trunk/www/libxul-esr/files/patch-bug789693
==============================================================================
--- trunk/www/libxul-esr/files/patch-bug789693	Thu Sep 13 12:47:10 2012	(r1013)
+++ trunk/www/libxul-esr/files/patch-bug789693	Thu Sep 13 12:47:21 2012	(r1014)
@@ -1,6 +1,6 @@
 --- toolkit/components/startup/nsAppStartup.cpp
 +++ toolkit/components/startup/nsAppStartup.cpp
-@@ -50,13 +50,14 @@
+@@ -50,17 +50,40 @@
  #include <sys/syscall.h>
  #endif
  
@@ -19,7 +19,33 @@
  #endif
  
  #include "mozilla/Telemetry.h"
-@@ -836,41 +837,56 @@ CalculateProcessCreationTimestamp()
+ 
++#if defined(__NetBSD__)
++#undef KERN_PROC
++#define KERN_PROC KERN_PROC2
++#define KINFO_PROC struct kinfo_proc2
++#else
++#define KINFO_PROC struct kinfo_proc
++#endif
++
++#if defined(XP_MACOSX)
++#define KP_START_SEC kp_proc.p_un.__p_starttime.tv_sec
++#define KP_START_USEC kp_proc.p_un.__p_starttime.tv_usec
++#elif defined(__DragonFly__)
++#define KP_START_SEC kp_start.tv_sec
++#define KP_START_USEC kp_start.tv_usec
++#elif defined(__FreeBSD__)
++#define KP_START_SEC ki_start.tv_sec
++#define KP_START_USEC ki_start.tv_usec
++#else
++#define KP_START_SEC p_ustart_sec
++#define KP_START_USEC p_ustart_usec
++#endif
++
+ static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID);
+ 
+ using namespace mozilla;
+@@ -836,42 +859,30 @@ CalculateProcessCreationTimestamp()
  #endif
    return timestamp;
  }
@@ -29,41 +55,29 @@
  static PRTime
  CalculateProcessCreationTimestamp()
  {
-+#if defined(__NetBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC2, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc2), 1 };
-+#elif defined(__OpenBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
-+#else
-   int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
-+#endif
-   size_t buffer_size;
-+
+-  int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
+-  size_t buffer_size;
+-  if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
+-    return 0;
++  int mib[] = {
++    CTL_KERN,
++    KERN_PROC,
++    KERN_PROC_PID,
++    getpid(),
 +#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
-+#else
-   if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
++    sizeof(KINFO_PROC),
++    1,
 +#endif
-     return 0;
++  };
++  u_int miblen = sizeof(mib) / sizeof(mib[0]);
  
 -  struct kinfo_proc *proc = (kinfo_proc*) malloc(buffer_size);  
-+#if defined(__NetBSD__)
-+  struct kinfo_proc2 *proc = (struct kinfo_proc2 *) malloc(buffer_size);
-+#else
-+  struct kinfo_proc *proc = (struct kinfo_proc *) malloc(buffer_size);
-+#endif
-+
-+#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
-+#else
-   if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
-+#endif
-     free(proc);
-     return 0;
-   }
-+
-+#if defined(XP_MACOSX)
-   PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
-   starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
+-  if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
+-    free(proc);
+-    return 0;
+-  }
+-  PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
 -  free(proc);
 -  return starttime;
 -}
@@ -74,24 +88,21 @@
 -  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
 -  size_t buffer_size;
 -  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
--    return 0;
--
++  KINFO_PROC proc;
++  size_t buffer_size = sizeof(proc);
++  if (sysctl(mib, miblen, &proc, &buffer_size, NULL, 0))
+     return 0;
+ 
 -  struct kinfo_proc *proc = (struct kinfo_proc*) malloc(buffer_size);
 -  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
 -    free(proc);
 -    return 0;
 -  }
-+#elif defined(__DragonFly__)
-+  PRTime starttime = static_cast<PRTime>(proc->kp_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->kp_start.tv_usec;
-+#elif defined(__FreeBSD__)
-+  PRTime starttime = static_cast<PRTime>(proc->ki_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->ki_start.tv_usec;
-+#else
-   PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
-   starttime += proc->p_ustart_usec;
-+#endif
-+
-   free(proc);
+-  PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->p_ustart_usec;
+-  free(proc);
++  PRTime starttime = static_cast<PRTime>(proc.KP_START_SEC) * PR_USEC_PER_SEC;
++  starttime += proc.KP_START_USEC;
    return starttime;
  }
+ #else

Modified: trunk/www/libxul/files/patch-bug789693
==============================================================================
--- trunk/www/libxul/files/patch-bug789693	Thu Sep 13 12:47:10 2012	(r1013)
+++ trunk/www/libxul/files/patch-bug789693	Thu Sep 13 12:47:21 2012	(r1014)
@@ -1,6 +1,6 @@
 --- toolkit/components/startup/nsAppStartup.cpp
 +++ toolkit/components/startup/nsAppStartup.cpp
-@@ -50,13 +50,14 @@
+@@ -50,18 +50,41 @@
  #include <sys/syscall.h>
  #endif
  
@@ -19,7 +19,34 @@
  #endif
  
  #include "mozilla/Telemetry.h"
-@@ -836,41 +837,56 @@ CalculateProcessCreationTimestamp()
+ #include "mozilla/StartupTimeline.h"
+ 
++#if defined(__NetBSD__)
++#undef KERN_PROC
++#define KERN_PROC KERN_PROC2
++#define KINFO_PROC struct kinfo_proc2
++#else
++#define KINFO_PROC struct kinfo_proc
++#endif
++
++#if defined(XP_MACOSX)
++#define KP_START_SEC kp_proc.p_un.__p_starttime.tv_sec
++#define KP_START_USEC kp_proc.p_un.__p_starttime.tv_usec
++#elif defined(__DragonFly__)
++#define KP_START_SEC kp_start.tv_sec
++#define KP_START_USEC kp_start.tv_usec
++#elif defined(__FreeBSD__)
++#define KP_START_SEC ki_start.tv_sec
++#define KP_START_USEC ki_start.tv_usec
++#else
++#define KP_START_SEC p_ustart_sec
++#define KP_START_USEC p_ustart_usec
++#endif
++
+ static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID);
+ 
+ #define kPrefLastSuccess "toolkit.startup.last_success"
+@@ -836,42 +859,30 @@ CalculateProcessCreationTimestamp()
  #endif
    return timestamp;
  }
@@ -29,41 +56,29 @@
  static PRTime
  CalculateProcessCreationTimestamp()
  {
-+#if defined(__NetBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC2, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc2), 1 };
-+#elif defined(__OpenBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
-+#else
-   int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
-+#endif
-   size_t buffer_size;
-+
+-  int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
+-  size_t buffer_size;
+-  if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
+-    return 0;
++  int mib[] = {
++    CTL_KERN,
++    KERN_PROC,
++    KERN_PROC_PID,
++    getpid(),
 +#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
-+#else
-   if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
++    sizeof(KINFO_PROC),
++    1,
 +#endif
-     return 0;
++  };
++  u_int miblen = sizeof(mib) / sizeof(mib[0]);
  
 -  struct kinfo_proc *proc = (kinfo_proc*) malloc(buffer_size);  
-+#if defined(__NetBSD__)
-+  struct kinfo_proc2 *proc = (struct kinfo_proc2 *) malloc(buffer_size);
-+#else
-+  struct kinfo_proc *proc = (struct kinfo_proc *) malloc(buffer_size);
-+#endif
-+
-+#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
-+#else
-   if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
-+#endif
-     free(proc);
-     return 0;
-   }
-+
-+#if defined(XP_MACOSX)
-   PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
-   starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
+-  if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
+-    free(proc);
+-    return 0;
+-  }
+-  PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
 -  free(proc);
 -  return starttime;
 -}
@@ -74,24 +89,21 @@
 -  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
 -  size_t buffer_size;
 -  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
--    return 0;
--
++  KINFO_PROC proc;
++  size_t buffer_size = sizeof(proc);
++  if (sysctl(mib, miblen, &proc, &buffer_size, NULL, 0))
+     return 0;
+ 
 -  struct kinfo_proc *proc = (struct kinfo_proc*) malloc(buffer_size);
 -  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
 -    free(proc);
 -    return 0;
 -  }
-+#elif defined(__DragonFly__)
-+  PRTime starttime = static_cast<PRTime>(proc->kp_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->kp_start.tv_usec;
-+#elif defined(__FreeBSD__)
-+  PRTime starttime = static_cast<PRTime>(proc->ki_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->ki_start.tv_usec;
-+#else
-   PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
-   starttime += proc->p_ustart_usec;
-+#endif
-+
-   free(proc);
+-  PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->p_ustart_usec;
+-  free(proc);
++  PRTime starttime = static_cast<PRTime>(proc.KP_START_SEC) * PR_USEC_PER_SEC;
++  starttime += proc.KP_START_USEC;
    return starttime;
  }
+ #else

Modified: trunk/www/seamonkey/files/patch-bug789693
==============================================================================
--- trunk/www/seamonkey/files/patch-bug789693	Thu Sep 13 12:47:10 2012	(r1013)
+++ trunk/www/seamonkey/files/patch-bug789693	Thu Sep 13 12:47:21 2012	(r1014)
@@ -1,6 +1,6 @@
 --- mozilla/toolkit/components/startup/nsAppStartup.cpp
 +++ mozilla/toolkit/components/startup/nsAppStartup.cpp
-@@ -50,13 +50,14 @@
+@@ -50,18 +50,41 @@
  #include <sys/syscall.h>
  #endif
  
@@ -19,7 +19,34 @@
  #endif
  
  #include "mozilla/Telemetry.h"
-@@ -836,41 +837,56 @@ CalculateProcessCreationTimestamp()
+ #include "mozilla/StartupTimeline.h"
+ 
++#if defined(__NetBSD__)
++#undef KERN_PROC
++#define KERN_PROC KERN_PROC2
++#define KINFO_PROC struct kinfo_proc2
++#else
++#define KINFO_PROC struct kinfo_proc
++#endif
++
++#if defined(XP_MACOSX)
++#define KP_START_SEC kp_proc.p_un.__p_starttime.tv_sec
++#define KP_START_USEC kp_proc.p_un.__p_starttime.tv_usec
++#elif defined(__DragonFly__)
++#define KP_START_SEC kp_start.tv_sec
++#define KP_START_USEC kp_start.tv_usec
++#elif defined(__FreeBSD__)
++#define KP_START_SEC ki_start.tv_sec
++#define KP_START_USEC ki_start.tv_usec
++#else
++#define KP_START_SEC p_ustart_sec
++#define KP_START_USEC p_ustart_usec
++#endif
++
+ static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID);
+ 
+ #define kPrefLastSuccess "toolkit.startup.last_success"
+@@ -836,42 +859,30 @@ CalculateProcessCreationTimestamp()
  #endif
    return timestamp;
  }
@@ -29,41 +56,29 @@
  static PRTime
  CalculateProcessCreationTimestamp()
  {
-+#if defined(__NetBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC2, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc2), 1 };
-+#elif defined(__OpenBSD__)
-+  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
-+#else
-   int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
-+#endif
-   size_t buffer_size;
-+
+-  int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
+-  size_t buffer_size;
+-  if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
+-    return 0;
++  int mib[] = {
++    CTL_KERN,
++    KERN_PROC,
++    KERN_PROC_PID,
++    getpid(),
 +#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
-+#else
-   if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
++    sizeof(KINFO_PROC),
++    1,
 +#endif
-     return 0;
++  };
++  u_int miblen = sizeof(mib) / sizeof(mib[0]);
  
 -  struct kinfo_proc *proc = (kinfo_proc*) malloc(buffer_size);  
-+#if defined(__NetBSD__)
-+  struct kinfo_proc2 *proc = (struct kinfo_proc2 *) malloc(buffer_size);
-+#else
-+  struct kinfo_proc *proc = (struct kinfo_proc *) malloc(buffer_size);
-+#endif
-+
-+#if defined(__NetBSD__) || defined(__OpenBSD__)
-+  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
-+#else
-   if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
-+#endif
-     free(proc);
-     return 0;
-   }
-+
-+#if defined(XP_MACOSX)
-   PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
-   starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
+-  if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
+-    free(proc);
+-    return 0;
+-  }
+-  PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
 -  free(proc);
 -  return starttime;
 -}
@@ -74,24 +89,21 @@
 -  int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
 -  size_t buffer_size;
 -  if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
--    return 0;
--
++  KINFO_PROC proc;
++  size_t buffer_size = sizeof(proc);
++  if (sysctl(mib, miblen, &proc, &buffer_size, NULL, 0))
+     return 0;
+ 
 -  struct kinfo_proc *proc = (struct kinfo_proc*) malloc(buffer_size);
 -  if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
 -    free(proc);
 -    return 0;
 -  }
-+#elif defined(__DragonFly__)
-+  PRTime starttime = static_cast<PRTime>(proc->kp_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->kp_start.tv_usec;
-+#elif defined(__FreeBSD__)
-+  PRTime starttime = static_cast<PRTime>(proc->ki_start.tv_sec) * PR_USEC_PER_SEC;
-+  starttime += proc->ki_start.tv_usec;
-+#else
-   PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
-   starttime += proc->p_ustart_usec;
-+#endif
-+
-   free(proc);
+-  PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
+-  starttime += proc->p_ustart_usec;
+-  free(proc);
++  PRTime starttime = static_cast<PRTime>(proc.KP_START_SEC) * PR_USEC_PER_SEC;
++  starttime += proc.KP_START_USEC;
    return starttime;
  }
+ #else



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201209131247.q8DClMbK077674>