diff options
Diffstat (limited to 'src/svm/svm.c')
-rw-r--r-- | src/svm/svm.c | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/src/svm/svm.c b/src/svm/svm.c index b844e20b4cc..d32c0a5d4db 100644 --- a/src/svm/svm.c +++ b/src/svm/svm.c @@ -327,7 +327,7 @@ svm_data_region_create (svm_map_region_args_t * a, svm_region_t * rp) return -3; } close (fd); - CLIB_MEM_UNPOISON (rp->data_base, map_size); + clib_mem_unpoison (rp->data_base, map_size); rp->backing_file = (char *) format (0, "%s%c", a->backing_file, 0); rp->flags |= SVM_FLAGS_FILE; } @@ -412,7 +412,7 @@ svm_data_region_map (svm_map_region_args_t * a, svm_region_t * rp) return -3; } close (fd); - CLIB_MEM_UNPOISON (rp->data_base, map_size); + clib_mem_unpoison (rp->data_base, map_size); } return 0; } @@ -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); @@ -605,7 +614,7 @@ svm_map_region (svm_map_region_args_t * a) return (0); } close (svm_fd); - CLIB_MEM_UNPOISON (rp, a->size); + clib_mem_unpoison (rp, a->size); svm_region_init_mapped_region (a, rp); @@ -663,7 +672,7 @@ svm_map_region (svm_map_region_args_t * a) return (0); } - CLIB_MEM_UNPOISON (rp, MMAP_PAGESIZE); + clib_mem_unpoison (rp, MMAP_PAGESIZE); /* * We lost the footrace to create this region; make sure @@ -701,7 +710,7 @@ svm_map_region (svm_map_region_args_t * a) close (svm_fd); - CLIB_MEM_UNPOISON (rp, a->size); + clib_mem_unpoison (rp, a->size); if ((uword) rp != rp->virtual_base) { @@ -1051,7 +1060,7 @@ svm_region_unmap_internal (void *rp_arg, u8 is_client) oldheap = svm_push_pvt_heap (rp); /* nb vec_delete() in the loop */ /* Remove the caller from the list of mappers */ - CLIB_MEM_UNPOISON (rp->client_pids, vec_bytes (rp->client_pids)); + clib_mem_unpoison (rp->client_pids, vec_bytes (rp->client_pids)); for (i = 0; i < vec_len (rp->client_pids); i++) { if (rp->client_pids[i] == mypid) @@ -1184,7 +1193,7 @@ svm_region_exit_internal (u8 is_client) virtual_base = root_rp->virtual_base; virtual_size = root_rp->virtual_size; - CLIB_MEM_UNPOISON (root_rp->client_pids, vec_bytes (root_rp->client_pids)); + clib_mem_unpoison (root_rp->client_pids, vec_bytes (root_rp->client_pids)); for (i = 0; i < vec_len (root_rp->client_pids); i++) { if (root_rp->client_pids[i] == mypid) @@ -1291,12 +1300,10 @@ svm_client_scan (const char *root_path) * Snapshoot names, can't hold root rp mutex across * find_or_create. */ - /* *INDENT-OFF* */ pool_foreach (subp, mp->subregions) { name = vec_dup (subp->subregion_name); vec_add1(svm_names, name); } - /* *INDENT-ON* */ pthread_mutex_unlock (&root_rp->mutex); |