notif_pending short circuits handle_events()
[akaros.git] / user / parlib / include / dtls.h
1 /*
2  * Copyright (c) 2012 The Regents of the University of California
3  * Kevin Klues <klueska@cs.berkeley.edu>
4  *
5  * This file is part of Parlib.
6  * 
7  * Parlib is free software: you can redistribute it and/or modify
8  * it under the terms of the Lesser GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  * 
12  * Parlib is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * Lesser GNU General Public License for more details.
16  * 
17  * See COPYING.LESSER for details on the GNU Lesser General Public License.
18  * See COPYING for details on the GNU General Public License.
19  */
20
21 #ifndef PARLIB_DTLS_H
22 #define PARLIB_DTLS_H
23
24 #include <stdint.h>
25 #include <stdlib.h>
26
27 #ifndef __GNUC__
28   #error "You need to be using gcc to compile this library..."
29 #endif 
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34
35 /* Declaration of types needed for dynamically allocatable tls */
36 typedef struct dtls_key *dtls_key_t;
37 typedef void (*dtls_dtor_t)(void*);
38
39 /* Initialize a dtls_key for dynamically setting/getting uthread local storage
40  * on a uthread or vcore. */
41 dtls_key_t dtls_key_create(dtls_dtor_t dtor);
42
43 /* Destroy a dtls key. */
44 void dtls_key_delete(dtls_key_t key);
45
46 /* Set dtls storage for the provided dtls key on the current uthread or vcore. */
47 void set_dtls(dtls_key_t key, void *dtls);
48
49 /* Get dtls storage for the provided dtls key on the current uthread or vcore. */
50 void *get_dtls(dtls_key_t key);
51
52 /* Destroy all dtls storage associated with the current uthread or vcore. */
53 void destroy_dtls();
54
55 #ifdef __cplusplus
56 }
57 #endif
58
59 #endif /* PARLIB_DTLS_H */
60