summaryrefslogblamecommitdiff
path: root/src/barrier.h
blob: 2076c1cd7daa9427832402113866484e5bf53ad4 (plain) (tree)
1
2
3
4
5
6
7
8
9





                                                                 


                                                             









                                                                      
#ifndef LIBURING_BARRIER_H
#define LIBURING_BARRIER_H

#if defined(__x86_64)
#define read_barrier()	__asm__ __volatile__("lfence":::"memory")
#define write_barrier()	__asm__ __volatile__("sfence":::"memory")
#elif defined(__i386__)
#define read_barrier()	__asm__ __volatile__("": : :"memory")
#define write_barrier()	__asm__ __volatile__("": : :"memory")
#else
/*
 * Add arch appropriate definitions. Be safe and use full barriers for
 * archs we don't have support for.
 */
#define read_barrier()	__sync_synchronize()
#define write_barrier()	__sync_synchronize()
#endif

#endif