#include <vppinfra/heap.h>
#include <vppinfra/pool.h>
#include <vppinfra/format.h>
-#include <vppinfra/linux/syscall.h>
#ifndef MMAP_PAGESIZE
#define MMAP_PAGESIZE (clib_mem_get_page_size())
{
SSVM_SEGMENT_SHM = 0,
SSVM_SEGMENT_MEMFD,
+ SSVM_SEGMENT_PRIVATE,
SSVM_N_SEGMENT_TYPES /**< Private segments */
} ssvm_segment_type_t;
void *heap;
/* Segment must be mapped at this address, or no supper */
- u64 ssvm_va;
+ uword ssvm_va;
/* The actual mmap size */
- u64 ssvm_size;
+ uword ssvm_size;
u32 master_pid;
u32 slave_pid;
u8 *name;
return;
}
- while (__sync_lock_test_and_set (&h->lock, 1))
+ while (clib_atomic_test_and_set (&h->lock))
;
h->owner_pid = my_pid;
always_inline void
ssvm_lock_non_recursive (ssvm_shared_header_t * h, u32 tag)
{
- while (__sync_lock_test_and_set (&h->lock, 1))
+ while (clib_atomic_test_and_set (&h->lock))
;
h->tag = tag;
int ssvm_slave_init_memfd (ssvm_private_t * memfd);
void ssvm_delete_memfd (ssvm_private_t * memfd);
+int ssvm_master_init_private (ssvm_private_t * ssvm);
+int ssvm_slave_init_private (ssvm_private_t * ssvm);
+void ssvm_delete_private (ssvm_private_t * ssvm);
+
ssvm_segment_type_t ssvm_type (const ssvm_private_t * ssvm);
u8 *ssvm_name (const ssvm_private_t * ssvm);