sysv_shm.c (60758) | sysv_shm.c (61081) |
---|---|
1/* $FreeBSD: head/sys/kern/sysv_shm.c 60758 2000-05-21 13:52:13Z peter $ */ | 1/* $FreeBSD: head/sys/kern/sysv_shm.c 61081 2000-05-29 22:40:54Z dillon $ */ |
2/* $NetBSD: sysv_shm.c,v 1.23 1994/07/04 23:25:12 glass Exp $ */ 3 4/* 5 * Copyright (c) 1994 Adam Glass and Charles Hannum. All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: --- 111 unchanged lines hidden (view full) --- 121struct shminfo shminfo = { 122 SHMMAX, 123 SHMMIN, 124 SHMMNI, 125 SHMSEG, 126 SHMALL 127}; 128 | 2/* $NetBSD: sysv_shm.c,v 1.23 1994/07/04 23:25:12 glass Exp $ */ 3 4/* 5 * Copyright (c) 1994 Adam Glass and Charles Hannum. All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: --- 111 unchanged lines hidden (view full) --- 121struct shminfo shminfo = { 122 SHMMAX, 123 SHMMIN, 124 SHMMNI, 125 SHMSEG, 126 SHMALL 127}; 128 |
129static int shm_use_phys; 130 |
|
129SYSCTL_DECL(_kern_ipc); 130SYSCTL_INT(_kern_ipc, OID_AUTO, shmmax, CTLFLAG_RW, &shminfo.shmmax, 0, ""); 131SYSCTL_INT(_kern_ipc, OID_AUTO, shmmin, CTLFLAG_RW, &shminfo.shmmin, 0, ""); 132SYSCTL_INT(_kern_ipc, OID_AUTO, shmmni, CTLFLAG_RD, &shminfo.shmmni, 0, ""); 133SYSCTL_INT(_kern_ipc, OID_AUTO, shmseg, CTLFLAG_RW, &shminfo.shmseg, 0, ""); 134SYSCTL_INT(_kern_ipc, OID_AUTO, shmall, CTLFLAG_RW, &shminfo.shmall, 0, ""); | 131SYSCTL_DECL(_kern_ipc); 132SYSCTL_INT(_kern_ipc, OID_AUTO, shmmax, CTLFLAG_RW, &shminfo.shmmax, 0, ""); 133SYSCTL_INT(_kern_ipc, OID_AUTO, shmmin, CTLFLAG_RW, &shminfo.shmmin, 0, ""); 134SYSCTL_INT(_kern_ipc, OID_AUTO, shmmni, CTLFLAG_RD, &shminfo.shmmni, 0, ""); 135SYSCTL_INT(_kern_ipc, OID_AUTO, shmseg, CTLFLAG_RW, &shminfo.shmseg, 0, ""); 136SYSCTL_INT(_kern_ipc, OID_AUTO, shmall, CTLFLAG_RW, &shminfo.shmall, 0, ""); |
137SYSCTL_INT(_kern_ipc, OID_AUTO, shm_use_phys, CTLFLAG_RW, &shm_use_phys, 0, ""); |
|
135 136static int 137shm_find_segment_by_key(key) 138 key_t key; 139{ 140 int i; 141 142 for (i = 0; i < shmalloced; i++) --- 380 unchanged lines hidden (view full) --- 523 shm_handle = (struct shm_handle *) 524 malloc(sizeof(struct shm_handle), M_SHM, M_WAITOK); 525 shmid = IXSEQ_TO_IPCID(segnum, shmseg->shm_perm); 526 527 /* 528 * We make sure that we have allocated a pager before we need 529 * to. 530 */ | 138 139static int 140shm_find_segment_by_key(key) 141 key_t key; 142{ 143 int i; 144 145 for (i = 0; i < shmalloced; i++) --- 380 unchanged lines hidden (view full) --- 526 shm_handle = (struct shm_handle *) 527 malloc(sizeof(struct shm_handle), M_SHM, M_WAITOK); 528 shmid = IXSEQ_TO_IPCID(segnum, shmseg->shm_perm); 529 530 /* 531 * We make sure that we have allocated a pager before we need 532 * to. 533 */ |
531#ifdef SHM_PHYS_BACKED 532 shm_handle->shm_object = 533 vm_pager_allocate(OBJT_PHYS, 0, size, VM_PROT_DEFAULT, 0); 534#else 535 shm_handle->shm_object = 536 vm_pager_allocate(OBJT_SWAP, 0, size, VM_PROT_DEFAULT, 0); 537#endif | 534 if (shm_use_phys) { 535 shm_handle->shm_object = 536 vm_pager_allocate(OBJT_PHYS, 0, size, VM_PROT_DEFAULT, 0); 537 } else { 538 shm_handle->shm_object = 539 vm_pager_allocate(OBJT_SWAP, 0, size, VM_PROT_DEFAULT, 0); 540 } |
538 vm_object_clear_flag(shm_handle->shm_object, OBJ_ONEMAPPING); 539 vm_object_set_flag(shm_handle->shm_object, OBJ_NOSPLIT); 540 541 shmseg->shm_internal = shm_handle; 542 shmseg->shm_perm.cuid = shmseg->shm_perm.uid = cred->cr_uid; 543 shmseg->shm_perm.cgid = shmseg->shm_perm.gid = cred->cr_gid; 544 shmseg->shm_perm.mode = (shmseg->shm_perm.mode & SHMSEG_WANTED) | 545 (mode & ACCESSPERMS) | SHMSEG_ALLOCATED; --- 133 unchanged lines hidden --- | 541 vm_object_clear_flag(shm_handle->shm_object, OBJ_ONEMAPPING); 542 vm_object_set_flag(shm_handle->shm_object, OBJ_NOSPLIT); 543 544 shmseg->shm_internal = shm_handle; 545 shmseg->shm_perm.cuid = shmseg->shm_perm.uid = cred->cr_uid; 546 shmseg->shm_perm.cgid = shmseg->shm_perm.gid = cred->cr_gid; 547 shmseg->shm_perm.mode = (shmseg->shm_perm.mode & SHMSEG_WANTED) | 548 (mode & ACCESSPERMS) | SHMSEG_ALLOCATED; --- 133 unchanged lines hidden --- |