// Copyright 2019 The Fuchsia Authors
//
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT
#ifndef ZIRCON_KERNEL_VM_INCLUDE_VM_PAGE_STATE_H_
#define ZIRCON_KERNEL_VM_INCLUDE_VM_PAGE_STATE_H_

#include <stdint.h>

// Defines the state of a VM page (|vm_page_t|).
//
// Be sure to keep this enum in sync with the definition of |vm_page_t|.
enum vm_page_state : uint32_t {
  VM_PAGE_STATE_FREE = 0,
  VM_PAGE_STATE_ALLOC,
  VM_PAGE_STATE_OBJECT,
  VM_PAGE_STATE_WIRED,
  VM_PAGE_STATE_HEAP,
  VM_PAGE_STATE_MMU,    // allocated to serve arch-specific mmu purposes
  VM_PAGE_STATE_IOMMU,  // allocated for platform-specific iommu structures
  VM_PAGE_STATE_IPC,

  VM_PAGE_STATE_COUNT_
};

#define VM_PAGE_STATE_BITS 3
static_assert((1u << VM_PAGE_STATE_BITS) >= VM_PAGE_STATE_COUNT_, "");

typedef struct vm_page_counts {
  int64_t by_state[VM_PAGE_STATE_COUNT_];
} vm_page_counts_t;

#endif  // ZIRCON_KERNEL_VM_INCLUDE_VM_PAGE_STATE_H_
