svm: Use ftruncate to expand svm on FreeBSD
[vpp.git] / src / svm / svm.c
index 0a91055..5580808 100644 (file)
@@ -551,7 +551,6 @@ svm_map_region (svm_map_region_args_t * a)
   int svm_fd;
   svm_region_t *rp;
   int deadman = 0;
-  u8 junk = 0;
   void *oldheap;
   int rv;
   int pid_holding_region_lock;
@@ -582,6 +581,15 @@ svm_map_region (svm_map_region_args_t * a)
 
       vec_free (shm_name);
 
+#ifdef __FreeBSD__
+      if (ftruncate (svm_fd, a->size) < 0)
+       {
+         clib_warning ("ftruncate region size");
+         close (svm_fd);
+         return (0);
+       }
+#else
+      u8 junk = 0;
       if (lseek (svm_fd, a->size, SEEK_SET) == (off_t) - 1)
        {
          clib_warning ("seek region size");
@@ -594,6 +602,7 @@ svm_map_region (svm_map_region_args_t * a)
          close (svm_fd);
          return (0);
        }
+#endif /* __FreeBSD__ */
 
       rp = mmap (uword_to_pointer (a->baseva, void *), a->size,
                 PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, svm_fd, 0);