| // Copyright 2017 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_handle.h" |
| |
| #include <zircon/process.h> |
| #include <zircon/status.h> |
| #include <zircon/syscalls.h> |
| |
| #include "base/logging.h" |
| #include "starboard/types.h" |
| |
| namespace base { |
| |
| ProcessId GetCurrentProcId() { |
| return GetProcId(GetCurrentProcessHandle()); |
| } |
| |
| ProcessHandle GetCurrentProcessHandle() { |
| // Note that zx_process_self() returns a real handle, and ownership is not |
| // transferred to the caller (i.e. this should never be closed). |
| return zx_process_self(); |
| } |
| |
| ProcessId GetProcId(ProcessHandle process) { |
| zx_info_handle_basic_t basic; |
| zx_status_t status = zx_object_get_info(process, ZX_INFO_HANDLE_BASIC, &basic, |
| sizeof(basic), nullptr, nullptr); |
| if (status != ZX_OK) { |
| DLOG(ERROR) << "zx_object_get_info failed: " |
| << zx_status_get_string(status); |
| return ZX_KOID_INVALID; |
| } |
| return basic.koid; |
| } |
| |
| } // namespace base |