1*6777b538SAndroid Build Coastguard Worker // Copyright 2021 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "base/process/process.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include "base/notimplemented.h" 8*6777b538SAndroid Build Coastguard Worker #include "base/process/internal_linux.h" 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker namespace base { 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker // static CanSetPriority()13*6777b538SAndroid Build Coastguard Workerbool Process::CanSetPriority() { 14*6777b538SAndroid Build Coastguard Worker return false; 15*6777b538SAndroid Build Coastguard Worker } 16*6777b538SAndroid Build Coastguard Worker GetPriority() const17*6777b538SAndroid Build Coastguard WorkerProcess::Priority Process::GetPriority() const { 18*6777b538SAndroid Build Coastguard Worker // See SetPriority(). 19*6777b538SAndroid Build Coastguard Worker DCHECK(IsValid()); 20*6777b538SAndroid Build Coastguard Worker return Priority::kUserBlocking; 21*6777b538SAndroid Build Coastguard Worker } 22*6777b538SAndroid Build Coastguard Worker SetPriority(Priority priority)23*6777b538SAndroid Build Coastguard Workerbool Process::SetPriority(Priority priority) { 24*6777b538SAndroid Build Coastguard Worker // Not implemented for POSIX systems other than Linux and Mac. With POSIX, if 25*6777b538SAndroid Build Coastguard Worker // we were to lower the process priority we wouldn't be able to raise it back 26*6777b538SAndroid Build Coastguard Worker // to its initial priority. 27*6777b538SAndroid Build Coastguard Worker NOTIMPLEMENTED(); 28*6777b538SAndroid Build Coastguard Worker return false; 29*6777b538SAndroid Build Coastguard Worker } 30*6777b538SAndroid Build Coastguard Worker CreationTime() const31*6777b538SAndroid Build Coastguard WorkerTime Process::CreationTime() const { 32*6777b538SAndroid Build Coastguard Worker // On Android, /proc is mounted (on recent-enough versions) with hidepid=2, 33*6777b538SAndroid Build Coastguard Worker // which hides other PIDs in /proc. This means that only /proc/self is 34*6777b538SAndroid Build Coastguard Worker // accessible. Instead of trying (and failing) to read the file, don't attempt 35*6777b538SAndroid Build Coastguard Worker // to read it. This also provides consistency across releases. 36*6777b538SAndroid Build Coastguard Worker int64_t start_ticks = is_current() 37*6777b538SAndroid Build Coastguard Worker ? internal::ReadProcSelfStatsAndGetFieldAsInt64( 38*6777b538SAndroid Build Coastguard Worker internal::VM_STARTTIME) 39*6777b538SAndroid Build Coastguard Worker : 0; 40*6777b538SAndroid Build Coastguard Worker 41*6777b538SAndroid Build Coastguard Worker if (!start_ticks) 42*6777b538SAndroid Build Coastguard Worker return Time(); 43*6777b538SAndroid Build Coastguard Worker 44*6777b538SAndroid Build Coastguard Worker TimeDelta start_offset = internal::ClockTicksToTimeDelta(start_ticks); 45*6777b538SAndroid Build Coastguard Worker Time boot_time = internal::GetBootTime(); 46*6777b538SAndroid Build Coastguard Worker if (boot_time.is_null()) 47*6777b538SAndroid Build Coastguard Worker return Time(); 48*6777b538SAndroid Build Coastguard Worker return Time(boot_time + start_offset); 49*6777b538SAndroid Build Coastguard Worker } 50*6777b538SAndroid Build Coastguard Worker 51*6777b538SAndroid Build Coastguard Worker } // namespace base 52