forked from Lainports/freebsd-ports
- Update firefox and thunderbird to 16.0 - Update seamonkey to 2.13 - Update all -i18n ports respectively - switch firefox 16.0 and seamonkey 2.13 to ALSA by default for better latency during pause and seeking with HTML5 video - remove fedisableexcept() hacks, obsolete since FreeBSD 4.0 - support system hunspell dictionaries [1] - unbreak -esr ports with clang3.2 [2] - unbreak nss build when CC contains full path [3] - remove GNOME option grouping [4] - integrate enigmail into thunderbird/seamonkey as an option [5] - remove mail/enigmail* [6] - enable ENIGMAIL, LIGHTNING and GIO options by default - add more reporters in about:memory: page-faults-hard, page-faults-soft, resident, vsize - use bundled jemalloc 3.0.0 on FreeBSD < 10.0 for gecko 16.0, only heap-allocated reporter works in about:memory (see bug 762445) - use lrintf() instead of slow C cast in bundled libopus - use libjpeg-turbo's faster color conversion if available during build - record startup time for telemetry - use -z origin instead of hardcoding path to gecko runtime - fail early if incompatible libxul version is installed (in USE_GECKO) - *miscellaneous cleanups and fixups* PR: ports/171534 [1] PR: ports/171566 [2] PR: ports/172164 [3] PR: ports/172201 [4] Discussed with: ale, beat, Jan Beich [5] Approved by: ale [6] In collaboration with: Jan Beich <jbeich@tormail.org> Security: 6e5a9afd-12d3-11e2-b47d-c8600054b392 Feature safe: yes Approved by: portmgr (beat)
95 lines
2.5 KiB
Text
95 lines
2.5 KiB
Text
diff --git mozilla/xpcom/base/nsMemoryReporterManager.cpp mozilla/xpcom/base/nsMemoryReporterManager.cpp
|
|
index a9aff58..674e757 100644
|
|
--- mozilla/xpcom/base/nsMemoryReporterManager.cpp
|
|
+++ mozilla/xpcom/base/nsMemoryReporterManager.cpp
|
|
@@ -32,7 +32,7 @@ using namespace mozilla;
|
|
# include "jemalloc.h"
|
|
#endif // MOZ_MEMORY
|
|
|
|
-#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(SOLARIS)
|
|
+#ifdef XP_UNIX
|
|
|
|
#include <sys/time.h>
|
|
#include <sys/resource.h>
|
|
@@ -95,6 +95,81 @@ static nsresult GetResident(PRInt64 *n)
|
|
return GetProcSelfStatmField(1, n);
|
|
}
|
|
|
|
+#elif defined(__DragonFly__) || defined(__FreeBSD__) \
|
|
+ || defined(__NetBSD__) || defined(__OpenBSD__)
|
|
+
|
|
+#include <sys/param.h>
|
|
+#include <sys/sysctl.h>
|
|
+#if defined(__DragonFly__) || defined(__FreeBSD__)
|
|
+#include <sys/user.h>
|
|
+#endif
|
|
+
|
|
+#include <unistd.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(__DragonFly__)
|
|
+#define KP_SIZE(kp) (kp.kp_vm_map_size)
|
|
+#define KP_RSS(kp) (kp.kp_vm_rssize * getpagesize())
|
|
+#elif defined(__FreeBSD__)
|
|
+#define KP_SIZE(kp) (kp.ki_size)
|
|
+#define KP_RSS(kp) (kp.ki_rssize * getpagesize())
|
|
+#elif defined(__NetBSD__)
|
|
+#define KP_SIZE(kp) (kp.p_vm_msize * getpagesize())
|
|
+#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize())
|
|
+#elif defined(__OpenBSD__)
|
|
+#define KP_SIZE(kp) ((kp.p_vm_dsize + kp.p_vm_ssize \
|
|
+ + kp.p_vm_tsize) * getpagesize())
|
|
+#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize())
|
|
+#endif
|
|
+
|
|
+static nsresult GetKinfoProcSelf(KINFO_PROC *proc)
|
|
+{
|
|
+ int mib[] = {
|
|
+ CTL_KERN,
|
|
+ KERN_PROC,
|
|
+ KERN_PROC_PID,
|
|
+ getpid(),
|
|
+#if defined(__NetBSD__) || defined(__OpenBSD__)
|
|
+ sizeof(KINFO_PROC),
|
|
+ 1,
|
|
+#endif
|
|
+ };
|
|
+ u_int miblen = sizeof(mib) / sizeof(mib[0]);
|
|
+ size_t size = sizeof(KINFO_PROC);
|
|
+ if (sysctl(mib, miblen, proc, &size, NULL, 0))
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ return NS_OK;
|
|
+}
|
|
+
|
|
+#define HAVE_VSIZE_AND_RESIDENT_REPORTERS 1
|
|
+static nsresult GetVsize(PRInt64 *n)
|
|
+{
|
|
+ KINFO_PROC proc;
|
|
+ nsresult rv = GetKinfoProcSelf(&proc);
|
|
+ if (NS_SUCCEEDED(rv))
|
|
+ *n = KP_SIZE(proc);
|
|
+
|
|
+ return rv;
|
|
+}
|
|
+
|
|
+static nsresult GetResident(PRInt64 *n)
|
|
+{
|
|
+ KINFO_PROC proc;
|
|
+ nsresult rv = GetKinfoProcSelf(&proc);
|
|
+ if (NS_SUCCEEDED(rv))
|
|
+ *n = KP_RSS(proc);
|
|
+
|
|
+ return rv;
|
|
+}
|
|
+
|
|
#elif defined(SOLARIS)
|
|
|
|
#include <procfs.h>
|