// Copyright 2020 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_SYS_BIN_PSUTILS_HANDLES_INTERNAL_H_
#define SRC_SYS_BIN_PSUTILS_HANDLES_INTERNAL_H_

#include <stdint.h>
#include <zircon/syscalls/object.h>
#include <zircon/types.h>

#include <vector>

enum Filter : uint64_t {
  kAll = 0,
  kProcess = 1u << (ZX_OBJ_TYPE_PROCESS - 1),
  kThread = 1u << (ZX_OBJ_TYPE_THREAD - 1),
  kVmo = 1u << (ZX_OBJ_TYPE_VMO - 1),
  kChannel = 1u << (ZX_OBJ_TYPE_CHANNEL - 1),
  kEvent = 1u << (ZX_OBJ_TYPE_EVENT - 1),
  kPort = 1u << (ZX_OBJ_TYPE_PORT - 1),
  kInterrupt = 1u << (ZX_OBJ_TYPE_INTERRUPT - 1),
  kPCIDev = 1u << (ZX_OBJ_TYPE_PCI_DEVICE - 1),
  kLog = 1u << (ZX_OBJ_TYPE_LOG - 1),
  kSocket = 1u << (ZX_OBJ_TYPE_SOCKET - 1),
  kResource = 1u << (ZX_OBJ_TYPE_RESOURCE - 1),
  kEventPair = 1u << (ZX_OBJ_TYPE_EVENTPAIR - 1),
  kJob = 1u << (ZX_OBJ_TYPE_JOB - 1),
  kVmar = 1u << (ZX_OBJ_TYPE_VMAR - 1),
  kFifo = 1u << (ZX_OBJ_TYPE_FIFO - 1),
  kGuest = 1u << (ZX_OBJ_TYPE_GUEST - 1),
  kVCpu = 1u << (ZX_OBJ_TYPE_VCPU - 1),
  kTimer = 1u << (ZX_OBJ_TYPE_TIMER - 1),
  kIommu = 1u << (ZX_OBJ_TYPE_IOMMU - 1),
};
// TODO(cpu): Rather than doing this bitshifting, we should just use a std::set of ZX_OBJ.

Filter operator+=(Filter& lhs, const Filter& rhs);
Filter operator~(const Filter& rhs);

size_t print_handles(FILE* f, const std::vector<zx_info_handle_extended_t>& handles, Filter filter);

#endif  // SRC_SYS_BIN_PSUTILS_HANDLES_INTERNAL_H_
