5052e610f9c9c9a379f65a0dd7f833b7baa8bdb0
[akaros.git] / user / parlib / include / parlib / dtls.h
1 /* Copyright (c) 2012 The Regents of the University of California
2  * Kevin Klues <klueska@cs.berkeley.edu>
3  *
4  * See LICENSE for details. */
5
6 #pragma once
7
8 #include <stdint.h>
9 #include <stdlib.h>
10
11 __BEGIN_DECLS
12
13 #ifndef __GNUC__
14 #error "You need to be using gcc to compile this library..."
15 #endif
16
17 /* Declaration of types needed for dynamically allocatable tls */
18 typedef struct dtls_key *dtls_key_t;
19 typedef void (*dtls_dtor_t)(void *);
20
21 /* Initialize a dtls_key for dynamically setting/getting uthread local storage
22  * on a uthread or vcore. */
23 dtls_key_t dtls_key_create(dtls_dtor_t dtor);
24
25 /* Destroy a dtls key. */
26 void dtls_key_delete(dtls_key_t key);
27
28 /* Set dtls storage for the provided dtls key on the current uthread or vcore.
29  */
30 void set_dtls(dtls_key_t key, void *dtls);
31
32 /* Get dtls storage for the provided dtls key on the current uthread or vcore.
33  */
34 void *get_dtls(dtls_key_t key);
35
36 /* Destroy all dtls storage associated with the current uthread or vcore. */
37 void destroy_dtls(void);
38
39 __END_DECLS