qemu/include/exec/memory-internal.h
<<
>>
Prefs
   1/*
   2 * Declarations for functions which are internal to the memory subsystem.
   3 *
   4 * Copyright 2011 Red Hat, Inc. and/or its affiliates
   5 *
   6 * Authors:
   7 *  Avi Kivity <avi@redhat.com>
   8 *
   9 * This work is licensed under the terms of the GNU GPL, version 2 or
  10 * later.  See the COPYING file in the top-level directory.
  11 *
  12 */
  13
  14/*
  15 * This header is for use by exec.c, memory.c and accel/tcg/cputlb.c ONLY,
  16 * for declarations which are shared between the memory subsystem's
  17 * internals and the TCG TLB code. Do not include it from elsewhere.
  18 */
  19
  20#ifndef MEMORY_INTERNAL_H
  21#define MEMORY_INTERNAL_H
  22
  23#include "cpu.h"
  24
  25#ifndef CONFIG_USER_ONLY
  26static inline AddressSpaceDispatch *flatview_to_dispatch(FlatView *fv)
  27{
  28    return fv->dispatch;
  29}
  30
  31static inline AddressSpaceDispatch *address_space_to_dispatch(AddressSpace *as)
  32{
  33    return flatview_to_dispatch(address_space_to_flatview(as));
  34}
  35
  36FlatView *address_space_get_flatview(AddressSpace *as);
  37void flatview_unref(FlatView *view);
  38
  39extern const MemoryRegionOps unassigned_mem_ops;
  40
  41bool memory_region_access_valid(MemoryRegion *mr, hwaddr addr,
  42                                unsigned size, bool is_write,
  43                                MemTxAttrs attrs);
  44
  45void flatview_add_to_dispatch(FlatView *fv, MemoryRegionSection *section);
  46AddressSpaceDispatch *address_space_dispatch_new(FlatView *fv);
  47void address_space_dispatch_compact(AddressSpaceDispatch *d);
  48void address_space_dispatch_free(AddressSpaceDispatch *d);
  49
  50void mtree_print_dispatch(struct AddressSpaceDispatch *d,
  51                          MemoryRegion *root);
  52#endif
  53#endif
  54