session: segment handle in accept/connect notifications
[vpp.git] / src / svm / ssvm.h
index 9bf009e..5b2bf0d 100644 (file)
@@ -37,7 +37,6 @@
 #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())
@@ -49,6 +48,7 @@ typedef enum ssvm_segment_type_
 {
   SSVM_SEGMENT_SHM = 0,
   SSVM_SEGMENT_MEMFD,
+  SSVM_SEGMENT_PRIVATE,
   SSVM_N_SEGMENT_TYPES         /**< Private segments */
 } ssvm_segment_type_t;
 
@@ -103,7 +103,7 @@ ssvm_lock (ssvm_shared_header_t * h, u32 my_pid, u32 tag)
       return;
     }
 
-  while (__sync_lock_test_and_set (&h->lock, 1))
+  while (clib_atomic_test_and_set (&h->lock))
     ;
 
   h->owner_pid = my_pid;
@@ -114,7 +114,7 @@ ssvm_lock (ssvm_shared_header_t * h, u32 my_pid, u32 tag)
 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;
@@ -195,6 +195,10 @@ int ssvm_master_init_memfd (ssvm_private_t * memfd);
 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);