1*6777b538SAndroid Build Coastguard Worker // Copyright 2015 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_handle.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include <stdint.h> 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Worker #include <ostream> 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Worker #include "base/check.h" 12*6777b538SAndroid Build Coastguard Worker #include "build/build_config.h" 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Worker namespace base { 15*6777b538SAndroid Build Coastguard Worker 16*6777b538SAndroid Build Coastguard Worker namespace { 17*6777b538SAndroid Build Coastguard Worker ProcessId g_pid_outside_of_namespace = kNullProcessId; 18*6777b538SAndroid Build Coastguard Worker } // namespace 19*6777b538SAndroid Build Coastguard Worker operator <<(std::ostream & os,const UniqueProcId & obj)20*6777b538SAndroid Build Coastguard Workerstd::ostream& operator<<(std::ostream& os, const UniqueProcId& obj) { 21*6777b538SAndroid Build Coastguard Worker os << obj.GetUnsafeValue(); 22*6777b538SAndroid Build Coastguard Worker return os; 23*6777b538SAndroid Build Coastguard Worker } 24*6777b538SAndroid Build Coastguard Worker GetUniqueIdForProcess()25*6777b538SAndroid Build Coastguard WorkerUniqueProcId GetUniqueIdForProcess() { 26*6777b538SAndroid Build Coastguard Worker // Used for logging. Must not use LogMessage or any of the macros that call 27*6777b538SAndroid Build Coastguard Worker // into it. 28*6777b538SAndroid Build Coastguard Worker return (g_pid_outside_of_namespace != kNullProcessId) 29*6777b538SAndroid Build Coastguard Worker ? UniqueProcId(g_pid_outside_of_namespace) 30*6777b538SAndroid Build Coastguard Worker : UniqueProcId(GetCurrentProcId()); 31*6777b538SAndroid Build Coastguard Worker } 32*6777b538SAndroid Build Coastguard Worker 33*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_AIX) 34*6777b538SAndroid Build Coastguard Worker InitUniqueIdForProcessInPidNamespace(ProcessId pid_outside_of_namespace)35*6777b538SAndroid Build Coastguard Workervoid InitUniqueIdForProcessInPidNamespace(ProcessId pid_outside_of_namespace) { 36*6777b538SAndroid Build Coastguard Worker DCHECK(pid_outside_of_namespace != kNullProcessId); 37*6777b538SAndroid Build Coastguard Worker g_pid_outside_of_namespace = pid_outside_of_namespace; 38*6777b538SAndroid Build Coastguard Worker } 39*6777b538SAndroid Build Coastguard Worker 40*6777b538SAndroid Build Coastguard Worker #endif 41*6777b538SAndroid Build Coastguard Worker 42*6777b538SAndroid Build Coastguard Worker } // namespace base 43