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)
124 lines
3.2 KiB
Text
124 lines
3.2 KiB
Text
diff --git xpcom/base/nsMemoryReporterManager.cpp xpcom/base/nsMemoryReporterManager.cpp
|
|
index a9aff58..674e757 100644
|
|
--- xpcom/base/nsMemoryReporterManager.cpp
|
|
+++ xpcom/base/nsMemoryReporterManager.cpp
|
|
@@ -64,7 +64,7 @@ extern void jemalloc_stats(jemalloc_stat
|
|
# endif // XP_LINUX
|
|
#endif // MOZ_MEMORY
|
|
|
|
-#if defined(XP_LINUX) || defined(XP_MACOSX)
|
|
+#ifdef XP_UNIX
|
|
|
|
#include <sys/time.h>
|
|
#include <sys/resource.h>
|
|
@@ -122,6 +122,78 @@ static PRInt64 GetResident()
|
|
return GetProcSelfStatmField(1);
|
|
}
|
|
|
|
+#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;
|
|
+}
|
|
+
|
|
+static PRInt64 GetVsize()
|
|
+{
|
|
+ KINFO_PROC proc;
|
|
+ if (NS_SUCCEEDED(GetKinfoProcSelf(&proc)))
|
|
+ return KP_SIZE(proc);
|
|
+
|
|
+ return -1;
|
|
+}
|
|
+
|
|
+static PRInt64 GetResident()
|
|
+{
|
|
+ KINFO_PROC proc;
|
|
+ if (NS_SUCCEEDED(GetKinfoProcSelf(&proc)))
|
|
+ return KP_RSS(proc);
|
|
+
|
|
+ return -1;
|
|
+}
|
|
+
|
|
#elif defined(XP_MACOSX)
|
|
|
|
#include <mach/mach_init.h>
|
|
@@ -224,7 +297,7 @@ static PRInt64 GetResident()
|
|
|
|
#endif
|
|
|
|
-#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(XP_WIN)
|
|
+#if defined(XP_UNIX) || defined(XP_WIN)
|
|
NS_MEMORY_REPORTER_IMPLEMENT(Vsize,
|
|
"vsize",
|
|
KIND_OTHER,
|
|
@@ -239,7 +312,7 @@ NS_MEMORY_REPORTER_IMPLEMENT(Vsize,
|
|
"measure of the memory resources used by the process.")
|
|
#endif
|
|
|
|
-#if defined(XP_LINUX) || defined(XP_MACOSX)
|
|
+#if defined(XP_UNIX)
|
|
NS_MEMORY_REPORTER_IMPLEMENT(PageFaultsSoft,
|
|
"page-faults-soft",
|
|
KIND_OTHER,
|
|
@@ -457,11 +530,11 @@ nsMemoryReporterManager::Init()
|
|
REGISTER(HeapUnallocated);
|
|
REGISTER(Resident);
|
|
|
|
-#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(XP_WIN)
|
|
+#if defined(XP_UNIX) || defined(XP_WIN)
|
|
REGISTER(Vsize);
|
|
#endif
|
|
|
|
-#if defined(XP_LINUX) || defined(XP_MACOSX)
|
|
+#if defined(XP_UNIX)
|
|
REGISTER(PageFaultsSoft);
|
|
REGISTER(PageFaultsHard);
|
|
#endif
|