This commit also converts our own copyright headers to directly use SPDX, but leaves all other copyright header intact, only adding the SPDX ident. As far as possible this commit also merges multiple Data61 copyright statements/headers into one for consistency.
51 lines
1.8 KiB
C
51 lines
1.8 KiB
C
/*
|
|
* Copyright 2014, General Dynamics C4 Systems
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-only
|
|
*/
|
|
|
|
#ifndef __OBJECT_CNODE_H
|
|
#define __OBJECT_CNODE_H
|
|
|
|
#include <types.h>
|
|
#include <api/failures.h>
|
|
#include <object/structures.h>
|
|
|
|
struct slot_range {
|
|
cte_t *cnode;
|
|
word_t offset;
|
|
word_t length;
|
|
};
|
|
typedef struct slot_range slot_range_t;
|
|
|
|
exception_t decodeCNodeInvocation(word_t invLabel, word_t length,
|
|
cap_t cap, extra_caps_t excaps,
|
|
word_t *buffer);
|
|
exception_t invokeCNodeRevoke(cte_t *destSlot);
|
|
exception_t invokeCNodeDelete(cte_t *destSlot);
|
|
exception_t invokeCNodeCancelBadgedSends(cap_t cap);
|
|
exception_t invokeCNodeInsert(cap_t cap, cte_t *srcSlot, cte_t *destSlot);
|
|
exception_t invokeCNodeMove(cap_t cap, cte_t *srcSlot, cte_t *destSlot);
|
|
exception_t invokeCNodeRotate(cap_t cap1, cap_t cap2, cte_t *slot1,
|
|
cte_t *slot2, cte_t *slot3);
|
|
void cteInsert(cap_t newCap, cte_t *srcSlot, cte_t *destSlot);
|
|
void cteMove(cap_t newCap, cte_t *srcSlot, cte_t *destSlot);
|
|
void capSwapForDelete(cte_t *slot1, cte_t *slot2);
|
|
void cteSwap(cap_t cap1, cte_t *slot1, cap_t cap2, cte_t *slot2);
|
|
exception_t cteRevoke(cte_t *slot);
|
|
exception_t cteDelete(cte_t *slot, bool_t exposed);
|
|
void cteDeleteOne(cte_t *slot);
|
|
void insertNewCap(cte_t *parent, cte_t *slot, cap_t cap);
|
|
bool_t PURE isMDBParentOf(cte_t *cte_a, cte_t *cte_b);
|
|
exception_t ensureNoChildren(cte_t *slot);
|
|
exception_t ensureEmptySlot(cte_t *slot);
|
|
bool_t PURE isFinalCapability(cte_t *cte);
|
|
bool_t PURE slotCapLongRunningDelete(cte_t *slot);
|
|
cte_t *getReceiveSlots(tcb_t *thread, word_t *buffer);
|
|
cap_transfer_t PURE loadCapTransfer(word_t *buffer);
|
|
|
|
#ifndef CONFIG_KERNEL_MCS
|
|
exception_t invokeCNodeSaveCaller(cte_t *destSlot);
|
|
void setupReplyMaster(tcb_t *thread);
|
|
#endif
|
|
#endif
|