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, Universitaetstrasse 6, 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_append_nomalloc(void **retaddr, struct memobj_append *memobj,
47                                    struct vregion *vregion, size_t size,
48                                    size_t *retsize, vregion_flags_t flags,
49                                    size_t alignment);
50errval_t vspace_map_anon_aligned(void **retaddr, struct memobj **ret_memobj,
51                                 struct vregion **ret_vregion, size_t size,
52                                 size_t *retsize, vregion_flags_t flags,
53                                 size_t alignment);
54errval_t vspace_map_anon_fixed(genvaddr_t base, size_t size,
55                               vregion_flags_t flags,
56                               struct vregion **ret_vregion,
57                               struct memobj **ret_memobj);
58errval_t vspace_map_one_frame_attr(void **retaddr, size_t size,
59                                   struct capref frame, vregion_flags_t flags,
60                                   struct memobj **retmemobj,
61                                   struct vregion **retvregion);
62errval_t vspace_map_one_frame_attr_aligned(void **retaddr, size_t size,
63                                   struct capref frame, vregion_flags_t flags,
64                                   size_t alignment,
65                                   struct memobj **retmemobj,
66                                   struct vregion **retvregion);
67errval_t vspace_map_one_frame(void **retaddr, size_t size, struct capref frame,
68                              struct memobj **retmemobj,
69                              struct vregion **retvregion);
70errval_t vspace_map_one_frame_one_map(struct memobj_one_frame_one_map *memobj,
71                                      struct vregion *vregion, size_t size,
72                                      struct capref frame);
73
74errval_t vspace_map_one_frame_fixed(lvaddr_t addr, size_t size,
75                                    struct capref frame,
76                                    struct memobj **retmemobj,
77                                    struct vregion **retvregion);
78errval_t vspace_map_one_frame_fixed_attr(lvaddr_t addr, size_t size,
79                                    struct capref frame, vregion_flags_t flags,
80                                    struct memobj **retmemobj,
81                                         struct vregion **retvregion);
82
83__END_DECLS
84
85#endif // LIBBARRELFISH_VSPACE_COMMON_H
86