123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "base/process/process.h"
- #include "base/notreached.h"
- #include "base/process/internal_linux.h"
- namespace base {
- // static
- bool Process::CanBackgroundProcesses() {
- return false;
- }
- bool Process::IsProcessBackgrounded() const {
- // See SetProcessBackgrounded().
- DCHECK(IsValid());
- return false;
- }
- bool Process::SetProcessBackgrounded(bool value) {
- // Not implemented for POSIX systems other than Linux and Mac. With POSIX, if
- // we were to lower the process priority we wouldn't be able to raise it back
- // to its initial priority.
- NOTIMPLEMENTED();
- return false;
- }
- Time Process::CreationTime() const {
- // On Android, /proc is mounted (on recent-enough versions) with hidepid=2,
- // which hides other PIDs in /proc. This means that only /proc/self is
- // accessible. Instead of trying (and failing) to read the file, don't attempt
- // to read it. This also provides consistency across releases.
- int64_t start_ticks = is_current()
- ? internal::ReadProcSelfStatsAndGetFieldAsInt64(
- internal::VM_STARTTIME)
- : 0;
- if (!start_ticks)
- return Time();
- TimeDelta start_offset = internal::ClockTicksToTimeDelta(start_ticks);
- Time boot_time = internal::GetBootTime();
- if (boot_time.is_null())
- return Time();
- return Time(boot_time + start_offset);
- }
- } // namespace base
|