seL4/include/kernel/cspace.h
2015-12-10 10:45:21 +11:00

67 lines
1.9 KiB
C

/*
* Copyright 2014, General Dynamics C4 Systems
*
* This software may be distributed and modified according to the terms of
* the GNU General Public License version 2. Note that NO WARRANTY is provided.
* See "LICENSE_GPLv2.txt" for details.
*
* @TAG(GD_GPL)
*/
#ifndef __KERNEL_CSPACE_H
#define __KERNEL_CSPACE_H
#include <types.h>
#include <api/failures.h>
#include <api/types.h>
#include <object/structures.h>
struct lookupCap_ret {
exception_t status;
cap_t cap;
};
typedef struct lookupCap_ret lookupCap_ret_t;
struct lookupCapAndSlot_ret {
exception_t status;
cap_t cap;
cte_t *slot;
};
typedef struct lookupCapAndSlot_ret lookupCapAndSlot_ret_t;
struct lookupSlot_raw_ret {
exception_t status;
cte_t *slot;
};
typedef struct lookupSlot_raw_ret lookupSlot_raw_ret_t;
struct lookupSlot_ret {
exception_t status;
cte_t *slot;
};
typedef struct lookupSlot_ret lookupSlot_ret_t;
struct resolveAddressBits_ret {
exception_t status;
cte_t *slot;
word_t bitsRemaining;
};
typedef struct resolveAddressBits_ret resolveAddressBits_ret_t;
lookupCap_ret_t lookupCap(tcb_t *thread, cptr_t cPtr);
lookupCapAndSlot_ret_t lookupCapAndSlot(tcb_t *thread, cptr_t cPtr);
lookupSlot_raw_ret_t lookupSlot(tcb_t *thread, cptr_t capptr);
lookupSlot_ret_t lookupSlotForCNodeOp(bool_t isSource,
cap_t root, cptr_t capptr,
word_t depth);
lookupSlot_ret_t lookupSourceSlot(cap_t root, cptr_t capptr,
word_t depth);
lookupSlot_ret_t lookupTargetSlot(cap_t root, cptr_t capptr,
word_t depth);
lookupSlot_ret_t lookupPivotSlot(cap_t root, cptr_t capptr,
word_t depth);
resolveAddressBits_ret_t resolveAddressBits(cap_t nodeCap,
cptr_t capptr,
word_t n_bits);
#endif