Merge from ASPLOS tree.
[barrelfish] / include / barrelfish / monitor_client.h
1 /**
2  * \file
3  * \brief Client for interacting with the monitor
4  */
5
6 /*
7  * Copyright (c) 2010, 2011, ETH Zurich.
8  * All rights reserved.
9  *
10  * This file is distributed under the terms in the attached LICENSE file.
11  * If you do not find this file, copies can be found by writing to:
12  * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
13  */
14
15 #ifndef BARRELFISH_MONITOR_CLIENT_H
16 #define BARRELFISH_MONITOR_CLIENT_H
17
18 struct monitor_lmp_binding;
19
20 /// Handlers for incoming/outgoing capabilities on the monitor binding
21 struct monitor_cap_handlers {
22     void *st; ///< state pointer passed to handler functions
23     void (*cap_receive_handler)(void *st, struct capref cap, uint32_t capid);
24     void (*cap_send_reply_handler)(void *st, uint32_t capid, errval_t success);
25 };
26
27 /* XXX: duplicate of monitor_bind_continuation_fn in generated code */
28 typedef void monitor_bind_cont_fn(void *st, errval_t err,
29                                   struct monitor_binding *_binding);
30
31 errval_t monitor_client_lmp_bind(struct monitor_lmp_binding *mcb,
32                                  monitor_bind_cont_fn *cont, void *st,
33                                  struct waitset *ws, size_t lmp_buflen_words);
34
35 errval_t monitor_client_lmp_accept(struct monitor_lmp_binding *mcb,
36                                    struct waitset *ws, size_t lmp_buflen_words);
37
38 errval_t monitor_client_new_binding(monitor_bind_cont_fn *cont, void *st,
39                                     struct waitset *ws, size_t lmp_buflen_words);
40
41
42 errval_t monitor_client_blocking_rpc_init(void);
43
44 errval_t monitor_cap_set_remote(struct capref cap, bool remote);
45
46 #endif // BARRELFISH_MONITOR_CLIENT_H