blob: da8d715e43ecf5bb74eecd31a67d42429350089a [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_DEVICES_SYSMEM_DRIVERS_SYSMEM_KOID_UTIL_H_
#define SRC_DEVICES_SYSMEM_DRIVERS_SYSMEM_KOID_UTIL_H_
#include <lib/fpromise/result.h>
#include <lib/zx/channel.h>
#include <zircon/assert.h>
#include <zircon/types.h>
#include <vector>
#include "src/devices/sysmem/drivers/sysmem/macros.h"
namespace sysmem_driver {
zx_status_t get_handle_koids(const zx::object_base& this_end, zx_koid_t* this_end_koid,
zx_koid_t* that_end_koid, zx_obj_type_t type);
template<class T>
zx_koid_t get_koid(const zx::object<T>& object) {
zx_koid_t this_end_koid;
zx_koid_t that_end_koid;
zx_status_t result = get_handle_koids(object, &this_end_koid, &that_end_koid, T::TYPE);
if (result != ZX_OK) {
return ZX_KOID_INVALID;
}
return this_end_koid;
}
} // namespace sysmem_driver
#endif // SRC_DEVICES_SYSMEM_DRIVERS_SYSMEM_KOID_UTIL_H_