1 /* 2 * Copyright 2014, General Dynamics C4 Systems 3 * 4 * SPDX-License-Identifier: GPL-2.0-only 5 */ 6 7 #pragma once 8 9 #include <types.h> 10 #include <api/failures.h> 11 #include <object/structures.h> 12 13 exception_t decodeCNodeInvocation(word_t invLabel, word_t length, 14 cap_t cap, word_t *buffer); 15 exception_t invokeCNodeRevoke(cte_t *destSlot); 16 exception_t invokeCNodeDelete(cte_t *destSlot); 17 exception_t invokeCNodeCancelBadgedSends(cap_t cap); 18 exception_t invokeCNodeInsert(cap_t cap, cte_t *srcSlot, cte_t *destSlot); 19 exception_t invokeCNodeMove(cap_t cap, cte_t *srcSlot, cte_t *destSlot); 20 exception_t invokeCNodeRotate(cap_t cap1, cap_t cap2, cte_t *slot1, 21 cte_t *slot2, cte_t *slot3); 22 void cteInsert(cap_t newCap, cte_t *srcSlot, cte_t *destSlot); 23 void cteMove(cap_t newCap, cte_t *srcSlot, cte_t *destSlot); 24 void capSwapForDelete(cte_t *slot1, cte_t *slot2); 25 void cteSwap(cap_t cap1, cte_t *slot1, cap_t cap2, cte_t *slot2); 26 exception_t cteRevoke(cte_t *slot); 27 exception_t cteDelete(cte_t *slot, bool_t exposed); 28 void cteDeleteOne(cte_t *slot); 29 void insertNewCap(cte_t *parent, cte_t *slot, cap_t cap); 30 bool_t PURE isMDBParentOf(cte_t *cte_a, cte_t *cte_b); 31 exception_t ensureNoChildren(cte_t *slot); 32 exception_t ensureEmptySlot(cte_t *slot); 33 bool_t PURE isFinalCapability(cte_t *cte); 34 bool_t PURE slotCapLongRunningDelete(cte_t *slot); 35 cte_t *getReceiveSlots(tcb_t *thread, word_t *buffer); 36 cap_transfer_t PURE loadCapTransfer(word_t *buffer); 37 38 #ifndef CONFIG_KERNEL_MCS 39 exception_t invokeCNodeSaveCaller(cte_t *destSlot); 40 void setupReplyMaster(tcb_t *thread); 41 #endif 42 43