* bsd_helper.cc (tunable_params): Add kern.ipc.shm_allow_removed as

bool parameter.
	* cygserver.conf: Add a description for the kern.ipc.shm_allow_removed
	parameter.
	* sysv_shm.cc (shminit): Set shm_allow_removed variable according to
	kern.ipc.shm_allow_removed setting.
This commit is contained in:
Corinna Vinschen 2007-11-05 15:45:52 +00:00
parent 5c8426d50e
commit 8f14a11301
4 changed files with 20 additions and 2 deletions

View File

@ -1,3 +1,12 @@
2007-11-05 Corinna Vinschen <corinna@vinschen.de>
* bsd_helper.cc (tunable_params): Add kern.ipc.shm_allow_removed as
bool parameter.
* cygserver.conf: Add a description for the kern.ipc.shm_allow_removed
parameter.
* sysv_shm.cc (shminit): Set shm_allow_removed variable according to
kern.ipc.shm_allow_removed setting.
2007-08-02 Corinna Vinschen <corinna@vinschen.de>
* smallprint.c: Remove.

View File

@ -582,6 +582,7 @@ static tun_struct tunable_params[] =
//{ "kern.ipc.shmmin", TUN_INT, {0}, {1}, {32767}, default_tun_check},
{ "kern.ipc.shmmni", TUN_INT, {0}, {1}, {32767}, default_tun_check},
{ "kern.ipc.shmseg", TUN_INT, {0}, {1}, {32767}, default_tun_check},
{ "kern.ipc.shm_allow_removed", TUN_BOOL, {TUN_UNDEF}, {TUN_FALSE}, {TUN_TRUE}, default_tun_check},
//{ "kern.ipc.shm_use_phys", TUN_INT, {0}, {1}, {32767}, default_tun_check},
{ NULL, TUN_NULL, {0}, {0}, {0}, NULL}
};

View File

@ -139,3 +139,9 @@
# kern.ipc.shmseg: Maximum number of shared memory segments per process.
# Default: 128, Min: 1, Max: 32767
#kern.ipc.shmseg 128
# kern.ipc.shm_allow_removed: Determines whether a process is allowed to
# attach to a shared memory segment (using the shmat call) after a successful
# call to shmctl(IPC_RMID). This is a Linux-specific, and therefore
# non-portable feature. Use with care. Default is "no".
#kern.ipc.shm_allow_removed no

View File

@ -952,6 +952,7 @@ void
shminit(void)
{
int i;
tun_bool_t shm_ar;
TUNABLE_INT_FETCH("kern.ipc.shmmaxpgs", &shminfo.shmall);
for (i = PAGE_SIZE; i > 0; i--) {
@ -962,8 +963,9 @@ shminit(void)
TUNABLE_INT_FETCH("kern.ipc.shmmin", &shminfo.shmmin);
TUNABLE_INT_FETCH("kern.ipc.shmmni", &shminfo.shmmni);
TUNABLE_INT_FETCH("kern.ipc.shmseg", &shminfo.shmseg);
TUNABLE_INT_FETCH("kern.ipc.shm_use_phys", &shm_use_phys);
TUNABLE_BOOL_FETCH("kern.ipc.shm_allow_removed", &shm_ar);
if (shm_ar == TUN_TRUE)
shm_allow_removed = 1;
shmalloced = shminfo.shmmni;
shmsegs = (struct shmid_ds *) sys_malloc(shmalloced * sizeof(shmsegs[0]), M_SHM, M_WAITOK);
if (shmsegs == NULL)