Incomplete cleanup of delete capop to use conts.
[barrelfish] / usr / monitor / capops / internal.h
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_INTERNAL_H
11 #define CAPOPS_INTERNAL_H
12
13 typedef void (*gen_result_cont_fn)(errval_t, void*);
14 struct result_closure {
15     gen_result_cont_fn handler;
16     void *arg;
17 };
18 #define MKRESCONT(h,a) ((struct result_closure){ .handler = (h), .arg = (a) })
19 #define CALLRESCONT(c,e) ((c).handler((e), (c).arg))
20
21 #define malloce(size, ret) \
22     (*(ret) = malloc(size), \
23      *(ret) ? SYS_ERR_OK : LIB_ERR_MALLOC_FAIL)
24
25 #define calloce(n, size, ret) \
26     (*(ret) = calloc(n, size), \
27      *(ret) ? SYS_ERR_OK : LIB_ERR_MALLOC_FAIL)
28
29 #define GOTO_IF_ERR(err, label) do { \
30     if (err_is_fail(err)) { \
31         goto label; \
32     } \
33 } while (0)
34
35 #define PANIC_IF_ERR(err, msg) do { \
36     errval_t tmp_err__ = (err); \
37     if (err_is_fail(tmp_err__)) { \
38         USER_PANIC_ERR(tmp_err__, (msg)); \
39     } \
40 } while (0)
41
42 #define PANIC_IF_ERR2(err2, msg2, err, msg) do { \
43     errval_t tmp_err2__ = (err2); \
44     if (err_is_fail(tmp_err2__)) { \
45         DEBUG_ERR((err), (msg)); \
46         USER_PANIC_ERR(tmp_err2__, (msg2)); \
47     } \
48 } while (0)
49
50 #define DEBUG_IF_ERR(err, msg) do { \
51     errval_t tmp_err__ = (err); \
52     if (err_is_fail(tmp_err__)) { \
53         DEBUG_ERR(tmp_err__, (msg)); \
54     } \
55 } while (0)
56
57 void find_cap__rx_handler(struct intermon_binding *b, intermon_caprep_t caprep,
58                           genvaddr_t st);
59 void find_cap_result__rx_handler(struct intermon_binding *b, errval_t result,
60                                  genvaddr_t st);
61 void find_descendants__rx_handler(struct intermon_binding *b,
62                                   intermon_caprep_t caprep, genvaddr_t st);
63 void find_descendants_result__rx_handler(struct intermon_binding *b,
64                                          errval_t status, genvaddr_t st);
65 void owner_updated__rx_handler(struct intermon_binding *b, genvaddr_t st);
66 void update_owner__rx_handler(struct intermon_binding *b,
67                               intermon_caprep_t caprep, genvaddr_t st);
68 void recv_copy_result__rx(struct intermon_binding *b, errval_t status,
69                           capaddr_t capaddr, uint8_t vbits, cslot_t slot,
70                           genvaddr_t st);
71 void recv_copy__rx(struct intermon_binding *b, intermon_caprep_t caprep,
72                    uint8_t owner_relations, genvaddr_t st);
73 void request_copy__rx(struct intermon_binding *b, coreid_t dest,
74                       intermon_caprep_t caprep, genvaddr_t st);
75 void delete_remote__rx(struct intermon_binding *b,
76                                intermon_caprep_t caprep, genvaddr_t st);
77 void delete_remote_result__rx(struct intermon_binding *b,
78                                       errval_t status, genvaddr_t st);
79 void move_request__rx_handler(struct intermon_binding *b,
80                               intermon_caprep_t caprep, uint8_t relations,
81                               genvaddr_t st);
82 void move_result__rx_handler(struct intermon_binding *b, errval_t status,
83                              genvaddr_t st);
84 void retype_request__rx(struct intermon_binding *b, intermon_caprep_t srcrep,
85                         int desttype, uint32_t destbits, genvaddr_t st);
86 void retype_response__rx(struct intermon_binding *b, errval_t status,
87                                  genvaddr_t st);
88 void request_revoke__rx_handler(struct intermon_binding *b,
89                                 intermon_caprep_t caprep, genvaddr_t st);
90 void revoke_result__rx_handler(struct intermon_binding *b, errval_t status,
91                                genvaddr_t st);
92
93 #endif