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_DELETE_INT_H
11#define CAPOPS_DELETE_INT_H
12
13#include <capops.h>
14#include <barrelfish/waitset.h>
15#include <barrelfish/event_queue.h>
16
17struct waitset *delete_steps_get_waitset(void);
18void delete_steps_init(struct waitset *ws);
19void delete_steps_trigger(void);
20void delete_steps_pause(void);
21void delete_steps_resume(void);
22
23struct delete_queue_node {
24    struct event_queue_node qn;
25    struct delete_queue_node *next;
26    struct event_closure cont;
27};
28
29void delete_queue_wait(struct delete_queue_node *qn,
30                       struct event_closure cont);
31void delete_queue_init(struct waitset *ws);
32
33struct delete_st {
34    struct delete_queue_node qn;
35    struct event_queue_node lock_qn;
36    struct domcapref capref;
37    struct capability cap;
38    struct capref newcap;
39    bool wait;
40    delete_result_handler_t result_handler;
41    void *st;
42};
43
44void capops_delete_int(struct delete_st *del_st);
45
46void send_new_ram_cap(struct capref cap);
47
48#endif
49