1/*
2 * Copyright (c) 2012 ETH Zurich.
3 * All rights reserved.
4 *
5 * This file is distributed under the terms in the attached LICENSE file.
6 * If you do not find this file, copies can be found by writing to:
7 * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
8 */
9
10#ifndef CAPOPS_H
11#define CAPOPS_H
12
13#include <barrelfish/caddr.h>
14#include <barrelfish/types.h>
15#include <barrelfish_kpi/capabilities.h>
16#include "domcap.h"
17
18typedef void (*copy_result_handler_t)(errval_t, capaddr_t, uint8_t, cslot_t, void*);
19void capops_copy(struct capref src, coreid_t dest, bool give_away,
20                 copy_result_handler_t result_handler, void *st);
21
22typedef void (*move_result_handler_t)(errval_t, void*);
23errval_t capops_move(struct domcapref cap, coreid_t dest,
24                     move_result_handler_t result_handler, void *st);
25
26void capops_retrieve(struct domcapref cap,
27                     move_result_handler_t result_handler, void *st);
28
29typedef void (*delete_result_handler_t)(errval_t, void*);
30void capops_delete(struct domcapref cap,
31                   delete_result_handler_t result_handler, void *st);
32
33typedef void (*revoke_result_handler_t)(errval_t, void*);
34void capops_revoke(struct domcapref cap,
35                   revoke_result_handler_t result_handler,
36                   void *st);
37
38typedef void (*retype_result_handler_t)(errval_t, void*);
39void capops_retype(enum objtype type, size_t objsize, size_t count, struct capref dest_root,
40                   capaddr_t dest_cn, uint8_t dest_level, cslot_t dest_slot,
41                   struct capref src_root, capaddr_t src, uint8_t src_level,
42                   gensize_t offset, retype_result_handler_t result_handler, void *st);
43
44struct intermon_binding;
45errval_t capops_init(struct waitset *ws, struct intermon_binding *b);
46
47#endif
48