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/fuchsia/koid.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include "base/fuchsia/fuchsia_logging.h" 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Worker namespace base { 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Worker namespace { 12*6777b538SAndroid Build Coastguard Worker GetBasicInfo(const zx::object_base & handle)13*6777b538SAndroid Build Coastguard Workerstd::optional<zx_info_handle_basic_t> GetBasicInfo( 14*6777b538SAndroid Build Coastguard Worker const zx::object_base& handle) { 15*6777b538SAndroid Build Coastguard Worker zx_info_handle_basic_t basic; 16*6777b538SAndroid Build Coastguard Worker zx_status_t status = handle.get_info(ZX_INFO_HANDLE_BASIC, &basic, 17*6777b538SAndroid Build Coastguard Worker sizeof(basic), nullptr, nullptr); 18*6777b538SAndroid Build Coastguard Worker if (status != ZX_OK) { 19*6777b538SAndroid Build Coastguard Worker ZX_DLOG(ERROR, status) << "zx_object_get_info"; 20*6777b538SAndroid Build Coastguard Worker return {}; 21*6777b538SAndroid Build Coastguard Worker } 22*6777b538SAndroid Build Coastguard Worker 23*6777b538SAndroid Build Coastguard Worker return basic; 24*6777b538SAndroid Build Coastguard Worker } 25*6777b538SAndroid Build Coastguard Worker 26*6777b538SAndroid Build Coastguard Worker } // namespace 27*6777b538SAndroid Build Coastguard Worker GetKoid(const zx::object_base & handle)28*6777b538SAndroid Build Coastguard Workerstd::optional<zx_koid_t> GetKoid(const zx::object_base& handle) { 29*6777b538SAndroid Build Coastguard Worker auto basic_info = GetBasicInfo(handle); 30*6777b538SAndroid Build Coastguard Worker if (!basic_info) 31*6777b538SAndroid Build Coastguard Worker return {}; 32*6777b538SAndroid Build Coastguard Worker return basic_info->koid; 33*6777b538SAndroid Build Coastguard Worker } 34*6777b538SAndroid Build Coastguard Worker GetRelatedKoid(const zx::object_base & handle)35*6777b538SAndroid Build Coastguard Workerstd::optional<zx_koid_t> GetRelatedKoid(const zx::object_base& handle) { 36*6777b538SAndroid Build Coastguard Worker auto basic_info = GetBasicInfo(handle); 37*6777b538SAndroid Build Coastguard Worker if (!basic_info) 38*6777b538SAndroid Build Coastguard Worker return {}; 39*6777b538SAndroid Build Coastguard Worker return basic_info->related_koid; 40*6777b538SAndroid Build Coastguard Worker } 41*6777b538SAndroid Build Coastguard Worker 42*6777b538SAndroid Build Coastguard Worker } // namespace base 43