36 lines
1.1 KiB
C
36 lines
1.1 KiB
C
/**
|
|
* \file
|
|
* \brief Kernel memory management.
|
|
*/
|
|
|
|
/*
|
|
* Copyright (c) 2012 ETH Zurich.
|
|
* All rights reserved.
|
|
*
|
|
* This file is distributed under the terms in the attached LICENSE file.
|
|
* If you do not find this file, copies can be found by writing to:
|
|
* ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
|
|
*/
|
|
|
|
#ifndef PAGING_H
|
|
#define PAGING_H
|
|
|
|
#include <aos/types.h>
|
|
#include <errors/errno.h>
|
|
|
|
struct mapping_info {
|
|
lpaddr_t pte; ///< where the capability is mapped
|
|
size_t pte_count; ///< the amount of PTEs mapped in this mapping
|
|
uint64_t offset; ///< the offset into the physical region identified by the capability where the mapping begins.
|
|
};
|
|
|
|
struct cte;
|
|
struct capability;
|
|
void create_mapping_cap(struct cte *mapping_cte, struct capability *cap,
|
|
struct cte *ptable, cslot_t entry, size_t pte_count);
|
|
errval_t compile_vaddr(struct cte *ptable, size_t entry, genvaddr_t *retvaddr);
|
|
errval_t unmap_capability(struct cte *mem);
|
|
errval_t paging_tlb_flush_range(struct cte *frame, size_t offset, size_t pages);
|
|
|
|
#endif // PAGING_H
|