freebsd-ports/www/chromium/files/patch-base__process__process_info_linux.cc
Rene Ladan 0cc81b8a18 www/chromium : update to 43.0.2357.130
* Fix some widely-reported crashes: [0,1]
  - settings page now displays
  - GMail works
* Mark BROKEN on FreeBSD 8 [2]

PR:		200601 [0]
PR:		200646 [2]
Submitted by:	protocelt <protoceltt@gmail.com> [0]
Submitted by:	truckman [2]
Obtained from:	https://github.com/gliaskos/freebsd-chromium [1]
		(pull requests 17-20)
MFH:		2015Q2
Security:	http://vuxml.freebsd.org/freebsd/d46ed7b8-1912-11e5-9fdf-00262d5ed8ee.html
2015-06-26 23:14:03 +00:00

39 lines
1.1 KiB
C++

--- base/process/process_info_linux.cc.orig 2015-06-20 15:12:38
+++ base/process/process_info_linux.cc
@@ -10,10 +10,28 @@
#include "base/process/process_handle.h"
#include "base/time/time.h"
+#if defined(__FreeBSD__) || defined(__DragonFly__)
+#include <sys/types.h>
+#include <sys/sysctl.h>
+#include <sys/user.h>
+#endif
+
namespace base {
//static
const Time CurrentProcessInfo::CreationTime() {
+#if defined(__FreeBSD__) || defined(__DragonFly__)
+ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
+ struct kinfo_proc proc;
+ size_t len = sizeof(struct kinfo_proc);
+ if (sysctl(mib, arraysize(mib), &proc, &len, NULL, 0) < 0)
+ return Time();
+#if defined(__DragonFly__)
+ return Time::FromTimeVal(proc.kp_start);
+#else
+ return Time::FromTimeVal(proc.ki_start);
+#endif
+#else
ProcessHandle pid = GetCurrentProcessHandle();
int64 start_ticks =
internal::ReadProcStatsAndGetFieldAsInt64(pid, internal::VM_STARTTIME);
@@ -22,6 +40,7 @@
Time boot_time = internal::GetBootTime();
DCHECK(!boot_time.is_null());
return Time(boot_time + start_offset);
+#endif
}
} // namespace base