X-Git-Url: https://pd.if.org/git/?p=nbds;a=blobdiff_plain;f=include%2Fhazard.h;fp=include%2Fhazard.h;h=938a3bd8c172096b9e15d55b4d31b9199273bc05;hp=0000000000000000000000000000000000000000;hb=a03cf3b0c40e6c3b8b4877b49a64288cb3fcb919;hpb=e592519ef19f890e551c27f47ef8b773bb4860da diff --git a/include/hazard.h b/include/hazard.h new file mode 100644 index 0000000..938a3bd --- /dev/null +++ b/include/hazard.h @@ -0,0 +1,25 @@ +/* + * Written by Josh Dybnis and released to the public domain, as explained at + * http://creativecommons.org/licenses/publicdomain + * + * hazard pointers + * + * www.research.ibm.com/people/m/michael/ieeetpds-2004.pdf + * + */ +#ifndef HAZARD_H +#define HAZARD_H + +#define STATIC_HAZ_PER_THREAD 2 + +typedef void (*free_t) (void *); +typedef void *haz_t; + +static inline void haz_set (haz_t *haz, void *x) { *haz = x; __asm__ __volatile__("mfence"); } + +haz_t *haz_get_static (int n); +void haz_register_dynamic (haz_t *haz); +void haz_unregister_dynamic (haz_t *haz); +void haz_defer_free (void *p, free_t f); + +#endif