2 * \brief Client handling internals for the process manager.
4 * Copyright (c) 2017, ETH Zurich.
7 * This file is distributed under the terms in the attached LICENSE file.
8 * If you do not find this file, copies can be found by writing to:
9 * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
12 #ifndef PENDING_CLIENTS_H
13 #define PENDING_CLIENTS_H
15 #include <barrelfish/barrelfish.h>
16 #include <barrelfish/event_queue.h>
17 #include <if/proc_mgmt_defs.h>
18 #include <if/spawn_defs.h>
20 #define HASH_INDEX_BUCKETS 6151
24 ClientType_SpawnWithCaps,
29 // TODO(razvan): Others?
32 struct pending_spawn {
33 struct capref domain_cap;
35 struct spawn_binding *b;
45 struct capref inheritcn_cap;
46 struct capref argcn_cap;
50 struct event_queue_node qn;
54 struct capref domain_cap;
56 struct spawn_binding *b;
60 struct capref dispframe;
62 struct event_queue_node qn;
65 struct pending_kill_exit_cleanup {
66 struct capref domain_cap;
67 struct spawn_binding *sb;
68 struct proc_mgmt_binding *pmb;
70 struct event_queue_node qn;
73 struct pending_client {
74 struct proc_mgmt_binding *b;
76 struct capref domain_cap;
81 struct pending_client *next;
84 errval_t pending_clients_add(struct capref domain_cap,
85 struct proc_mgmt_binding *b, enum ClientType type,
87 errval_t pending_clients_release(struct capref domain_cap, enum ClientType type,
88 struct pending_client **ret_cl);
89 errval_t pending_clients_release_one(struct capref domain_cap,
91 struct proc_mgmt_binding *b,
92 struct pending_client **ret_cl);
94 #endif // PENDING_CLIENTS_H