75f3022567e592cb765fe3cf38af37756077312d
[barrelfish] / usr / proc_mgmt / spawnd_state.c
1 /*
2  * \brief Spawnd state internals for the process manager.
3  *
4  * Copyright (c) 2017, ETH Zurich.
5  * All rights reserved.
6  *
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.
10  */
11
12 #include <barrelfish/barrelfish.h>
13
14 #include "spawnd_state.h"
15
16 static struct spawnd_state *spawnds[MAX_COREID];
17
18 errval_t spawnd_state_alloc(coreid_t core_id, struct spawn_binding *b)
19 {
20     spawnds[core_id] = (struct spawnd_state*) malloc(
21             sizeof(struct spawnd_state));
22     if (spawnds[core_id] == NULL) {
23         return LIB_ERR_MALLOC_FAIL;
24     }
25
26     spawnds[core_id]->b = b;
27     spawnds[core_id]->core_id = core_id;
28
29     return SYS_ERR_OK;
30 }
31
32 void spawnd_state_free(coreid_t core_id)
33 {
34     if (spawnds[core_id] != NULL) {
35         free(spawnds[core_id]);
36     }
37 }
38
39 inline bool spawnd_state_exists(coreid_t core_id)
40 {
41     return spawnds[core_id] != NULL;
42 }
43
44 inline struct spawnd_state *spawnd_state_get(coreid_t core_id)
45 {
46     return spawnds[core_id];
47 }