diff options
Diffstat (limited to 'src/svm')
-rw-r--r-- | src/svm/svm.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/svm/svm.c b/src/svm/svm.c index 0a910558f6e..5580808909a 100644 --- a/src/svm/svm.c +++ b/src/svm/svm.c @@ -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); |