Rename struct slab_alloc to struct slab_allocator.
[barrelfish] / include / target / x86 / barrelfish / pmap_target.h
1 /**
2  * \file
3  * \brief Pmap definition common for the x86 archs
4  */
5
6 /*
7  * Copyright (c) 2009, ETH Zurich.
8  * All rights reserved.
9  *
10  * This file is distributed under the terms in the attached LICENSE file.
11  * If you do not find this file, copies can be found by writing to:
12  * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
13  */
14
15 #ifndef TARGET_X86_BARRELFISH_PMAP_H
16 #define TARGET_X86_BARRELFISH_PMAP_H
17
18 #include <barrelfish/pmap.h>
19
20 /// Node in the meta-data, corresponds to an actual VNode object
21 struct vnode { // NB: misnomer :)
22     uint16_t      entry;       ///< Page table entry of this VNode
23     bool          is_vnode;    ///< Is this a vnode, or a (leaf) page mapping
24     struct vnode  *next;       ///< Next entry in list of siblings
25     union {
26         struct {
27             struct capref cap;         ///< VNode cap
28             struct vnode  *children;   ///< Children of this VNode
29         } vnode; // for non-leaf node (maps another vnode)
30         struct {
31             struct capref cap;         ///< Frame cap
32             genvaddr_t    offset;      ///< Offset within mapped frame cap
33             vregion_flags_t flags;     ///< Flags for mapping
34             size_t        pte_count;   ///< number of mapped PTEs in this mapping
35         } frame; // for leaf node (maps an actual page)
36     } u;
37 };
38
39 struct pmap_x86 {
40     struct pmap p;
41     struct vregion vregion;     ///< Vregion used to reserve virtual address for metadata
42     genvaddr_t vregion_offset;  ///< Offset into amount of reserved virtual address used
43     struct vnode root;          ///< Root of the vnode tree
44     errval_t (*refill_slabs)(struct pmap_x86 *); ///< Function to refill slabs
45     struct slab_allocator slab;     ///< Slab allocator for the vnode lists
46     genvaddr_t min_mappable_va; ///< Minimum mappable virtual address
47     genvaddr_t max_mappable_va; ///< Maximum mappable virtual address
48     uint8_t slab_buffer[512];   ///< Initial buffer to back the allocator
49 };
50
51 #endif // TARGET_X86_BARRELFISH_PMAP_H