7 * Copyright (c) 2009, 2010, 2011, ETH Zurich.
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.
15 #ifndef BARRELFISH_DOMAIN_H
16 #define BARRELFISH_DOMAIN_H
18 typedef void (*domain_spanned_callback_t)(void *arg, errval_t err);
20 struct mem_rpc_client;
21 struct dist2_rpc_client;
22 struct monitor_binding;
23 struct monitor_blocking_rpc_client;
25 struct spawn_rpc_client;
27 struct waitset *get_default_waitset(void);
28 void disp_set_core_id(coreid_t core_id);
29 coreid_t disp_get_core_id(void);
30 domainid_t disp_get_domain_id(void);
31 coreid_t disp_handle_get_core_id(dispatcher_handle_t handle);
32 void set_monitor_binding(struct monitor_binding *b);
33 struct monitor_binding *get_monitor_binding(void);
34 void set_monitor_blocking_rpc_client(struct monitor_blocking_rpc_client *st);
35 struct monitor_blocking_rpc_client *get_monitor_blocking_rpc_client(void);
36 void set_mem_client(struct mem_rpc_client *st);
37 struct mem_rpc_client *get_mem_client(void);
38 struct pinned_state *get_current_pinned_state(void);
39 struct vspace *get_current_vspace(void);
40 struct pmap *get_current_pmap(void);
41 struct morecore_state *get_morecore_state(void);
42 struct ram_alloc_state *get_ram_alloc_state(void);
43 void set_nameservice_rpc_client(struct dist2_rpc_client *st);
44 struct dist2_rpc_client *get_nameservice_rpc_client(void);
45 void set_spawn_rpc_client(coreid_t core, struct spawn_rpc_client *st);
46 struct spawn_rpc_client *get_spawn_rpc_client(coreid_t core);
47 struct terminal_state *get_terminal_state(void);
48 void set_terminal_state(struct terminal_state *st);
49 struct domain_state *get_domain_state(void);
50 void set_domain_state(struct domain_state *st);
51 struct spawn_state *get_spawn_state(void);
52 void set_spawn_state(struct spawn_state *st);
53 struct slot_alloc_state *get_slot_alloc_state(void);
54 struct skb_state *get_skb_state(void);
56 errval_t domain_init(void);
57 errval_t domain_new_dispatcher(coreid_t core_id,
58 domain_spanned_callback_t callback,
60 errval_t domain_thread_create_on(coreid_t core_id, thread_func_t start_func,
62 errval_t domain_thread_create_on_varstack(coreid_t core_id,
63 thread_func_t start_func,
64 void *arg, size_t stacksize);
65 errval_t domain_send_cap(coreid_t core_id, struct capref cap);
66 errval_t domain_wakeup_on(dispatcher_handle_t disp, struct thread *thread);
67 errval_t domain_wakeup_on_disabled(dispatcher_handle_t disp,
68 struct thread *thread,
69 dispatcher_handle_t mydisp);
70 errval_t domain_thread_move_to(struct thread *thread, coreid_t core_id);