rename mmap MAP_SHARED to MAP_IPC_SHARED

. MAP_SHARED was used to implement sysv shared memory
	. used to signal shareable memory region to VM
	. assumptions about this situation break when processes
	  use MAP_SHARED for its normal, standardised meaning
This commit is contained in:
Ben Gras
2011-07-15 18:10:50 +02:00
parent 255ae85b1e
commit 85f6d866e6
7 changed files with 16 additions and 6 deletions

View File

@@ -74,7 +74,7 @@ PUBLIC int do_shmget(message *m)
memset(shm, 0, sizeof(struct shm_struct));
shm->page = (vir_bytes) mmap(0, size,
PROT_READ|PROT_WRITE,
MAP_CONTIG|MAP_PREALLOC|MAP_ANON|MAP_SHARED,
MAP_CONTIG|MAP_PREALLOC|MAP_ANON|MAP_IPC_SHARED,
-1, 0);
if (shm->page == (vir_bytes) MAP_FAILED)
return ENOMEM;

View File

@@ -56,7 +56,7 @@ PRIVATE void print_region(struct vm_region_info *vri, int *n)
(vri->vri_prot & PROT_READ) ? 'r' : '-',
(vri->vri_prot & PROT_WRITE) ? 'w' : '-',
(vri->vri_prot & PROT_EXEC) ? 'x' : '-',
(vri->vri_flags & MAP_SHARED) ? 's' : 'p',
(vri->vri_flags & MAP_IPC_SHARED) ? 's' : 'p',
vri->vri_length / 1024L);
(*n)++;
}

View File

@@ -368,7 +368,7 @@ PRIVATE int dump_regions(int slot)
(vri[i].vri_prot & PROT_READ) ? 'r' : '-',
(vri[i].vri_prot & PROT_WRITE) ? 'w' : '-',
(vri[i].vri_prot & PROT_EXEC) ? 'x' : '-',
(vri[i].vri_flags & MAP_SHARED) ? 's' : 'p');
(vri[i].vri_flags & MAP_IPC_SHARED) ? 's' : 'p');
count++;
}

View File

@@ -68,7 +68,14 @@ PUBLIC int do_mmap(message *m)
if(m->VMM_FLAGS & MAP_LOWER16M) vrflags |= VR_LOWER16MB;
if(m->VMM_FLAGS & MAP_LOWER1M) vrflags |= VR_LOWER1MB;
if(m->VMM_FLAGS & MAP_ALIGN64K) vrflags |= VR_PHYS64K;
if(m->VMM_FLAGS & MAP_SHARED) vrflags |= VR_SHARED;
if(m->VMM_FLAGS & MAP_IPC_SHARED) {
vrflags |= VR_SHARED;
/* Shared memory has to be preallocated. */
if(m->VMM_FLAGS & (MAP_PREALLOC|MAP_ANON) !=
(MAP_PREALLOC|MAP_ANON)) {
return EINVAL;
}
}
if(m->VMM_FLAGS & MAP_CONTIG) vrflags |= VR_CONTIG;
if(len % VM_PAGE_SIZE)

View File

@@ -1999,7 +1999,7 @@ PUBLIC int get_region_info(struct vmproc *vmp, struct vm_region_info *vri,
if (!(vr->flags & VR_WRITABLE))
vri->vri_prot &= ~PROT_WRITE;
vri->vri_flags = (vr->flags & VR_SHARED) ? MAP_SHARED : 0;
vri->vri_flags = (vr->flags & VR_SHARED) ? MAP_IPC_SHARED : 0;
next = vr->vaddr + vr->length;
region_incr_iter(&v_iter);