1/**
2 * \file
3 * \brief Common vspace library includes definitions
4 */
5
6/*
7 * Copyright (c) 2009, 2010, 2011, ETH Zurich.
8 * Copyright (c) 2014, HP Labs.
9 * All rights reserved.
10 *
11 * This file is distributed under the terms in the attached LICENSE file.
12 * If you do not find this file, copies can be found by writing to:
13 * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
14 */
15
16#ifndef LIBBARRELFISH_VSPACE_COMMON_H
17#define LIBBARRELFISH_VSPACE_COMMON_H
18
19typedef uint32_t vm_fault_type_t;
20#define PRIuVMFAULT PRIu32
21#define PRIxVMFAULT PRIx32
22
23typedef uint32_t vregion_flags_t;
24#define PRIuVREGIONFLAGS PRIu32
25#define PRIxVREGIONFLAGS PRIx32
26
27#include <sys/cdefs.h>
28
29#include <barrelfish/memobj.h>
30#include <barrelfish/vregion.h>
31#include <barrelfish/pmap_arch.h>
32#include <barrelfish/vspace_layout.h>
33#include <barrelfish/vspace.h>
34#include <barrelfish/vspace_mmu_aware.h>
35
36__BEGIN_DECLS
37
38errval_t vspace_unmap(const void *buf);
39errval_t vspace_map_anon_attr(void **retaddr, struct memobj **ret_memobj,
40                              struct vregion **ret_vregion, size_t size,
41                              size_t *retsize, vregion_flags_t flags);
42errval_t vspace_map_anon_nomalloc(void **retaddr, struct memobj_anon *memobj,
43                                  struct vregion *vregion, size_t size,
44                                  size_t *retsize, vregion_flags_t flags,
45                                  size_t alignment);
46errval_t vspace_map_anon_aligned(void **retaddr, struct memobj **ret_memobj,
47                                 struct vregion **ret_vregion, size_t size,
48                                 size_t *retsize, vregion_flags_t flags,
49                                 size_t alignment);
50errval_t vspace_map_anon_fixed(genvaddr_t base, size_t size,
51                               vregion_flags_t flags,
52                               struct vregion **ret_vregion,
53                               struct memobj **ret_memobj);
54errval_t vspace_map_one_frame_attr(void **retaddr, size_t size,
55                                   struct capref frame, vregion_flags_t flags,
56                                   struct memobj **retmemobj,
57                                   struct vregion **retvregion);
58errval_t vspace_map_one_frame_attr_aligned(void **retaddr, size_t size,
59                                   struct capref frame, vregion_flags_t flags,
60                                   size_t alignment,
61                                   struct memobj **retmemobj,
62                                   struct vregion **retvregion);
63errval_t vspace_map_one_frame(void **retaddr, size_t size, struct capref frame,
64                              struct memobj **retmemobj,
65                              struct vregion **retvregion);
66errval_t vspace_map_one_frame_one_map(struct memobj_one_frame_one_map *memobj,
67                                      struct vregion *vregion, size_t size,
68                                      struct capref frame);
69
70errval_t vspace_map_one_frame_fixed(lvaddr_t addr, size_t size,
71                                    struct capref frame,
72                                    struct memobj **retmemobj,
73                                    struct vregion **retvregion);
74errval_t vspace_map_one_frame_fixed_attr(lvaddr_t addr, size_t size,
75                                    struct capref frame, vregion_flags_t flags,
76                                    struct memobj **retmemobj,
77                                         struct vregion **retvregion);
78
79__END_DECLS
80
81#endif // LIBBARRELFISH_VSPACE_COMMON_H
82