Use balloc to extend Ifile.
[unix-history] / usr / src / sys / kern / sysv_shm.c
index a75fdc7..1dc3507 100644 (file)
@@ -9,9 +9,9 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- * from: Utah $Hdr: uipc_shm.c 1.9 89/08/14$
+ * from: Utah $Hdr: uipc_shm.c 1.11 92/04/23$
  *
  *
- *     @(#)sysv_shm.c  7.17 (Berkeley) %G%
+ *     @(#)sysv_shm.c  7.20 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
 
 #ifdef SYSVSHM
 
 
 #ifdef SYSVSHM
 
-#include "param.h"
-#include "systm.h"
-#include "kernel.h"
-#include "proc.h"
-#include "shm.h"
-#include "malloc.h"
-#include "mman.h"
-#include "vm/vm.h"
-#include "vm/vm_kern.h"
-#include "vm/vm_inherit.h"
-#include "vm/vm_pager.h"
-
-#ifdef HPUXCOMPAT
-#include "hp/hpux/hpux.h"
-#endif
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/proc.h>
+#include <sys/shm.h>
+#include <sys/malloc.h>
+#include <sys/mman.h>
+
+#include <vm/vm.h>
+#include <vm/vm_kern.h>
+#include <vm/vm_inherit.h>
+#include <vm/vm_pager.h>
 
 int    shmat(), shmctl(), shmdt(), shmget();
 int    (*shmcalls[])() = { shmat, shmctl, shmdt, shmget };
 
 int    shmat(), shmctl(), shmdt(), shmget();
 int    (*shmcalls[])() = { shmat, shmctl, shmdt, shmget };
@@ -79,11 +76,12 @@ shminit()
 /*
  * Entry point for all SHM calls
  */
 /*
  * Entry point for all SHM calls
  */
+struct shmsys_args {
+       u_int which;
+};
 shmsys(p, uap, retval)
        struct proc *p;
 shmsys(p, uap, retval)
        struct proc *p;
-       struct args {
-               u_int which;
-       } *uap;
+       struct shmsys_args *uap;
        int *retval;
 {
 
        int *retval;
 {
 
@@ -95,13 +93,14 @@ shmsys(p, uap, retval)
 /*
  * Get a shared memory segment
  */
 /*
  * Get a shared memory segment
  */
+struct shmget_args {
+       key_t key;
+       int size;
+       int shmflg;
+};
 shmget(p, uap, retval)
        struct proc *p;
 shmget(p, uap, retval)
        struct proc *p;
-       register struct args {
-               key_t key;
-               int size;
-               int shmflg;
-       } *uap;
+       register struct shmget_args *uap;
        int *retval;
 {
        register struct shmid_ds *shp;
        int *retval;
 {
        register struct shmid_ds *shp;
@@ -188,14 +187,15 @@ shmget(p, uap, retval)
 /*
  * Shared memory control
  */
 /*
  * Shared memory control
  */
+struct shmctl_args {
+       int shmid;
+       int cmd;
+       caddr_t buf;
+};
 /* ARGSUSED */
 shmctl(p, uap, retval)
        struct proc *p;
 /* ARGSUSED */
 shmctl(p, uap, retval)
        struct proc *p;
-       register struct args {
-               int shmid;
-               int cmd;
-               caddr_t buf;
-       } *uap;
+       register struct shmctl_args *uap;
        int *retval;
 {
        register struct shmid_ds *shp;
        int *retval;
 {
        register struct shmid_ds *shp;
@@ -236,18 +236,6 @@ shmctl(p, uap, retval)
                        shmfree(shp);
                break;
 
                        shmfree(shp);
                break;
 
-#ifdef HPUXCOMPAT
-       case SHM_LOCK:
-       case SHM_UNLOCK:
-               /* don't really do anything, but make them think we did */
-               if ((p->p_flag & SHPUX) == 0)
-                       return (EINVAL);
-               if (cred->cr_uid && cred->cr_uid != shp->shm_perm.uid &&
-                   cred->cr_uid != shp->shm_perm.cuid)
-                       return (EPERM);
-               break;
-#endif
-
        default:
                return (EINVAL);
        }
        default:
                return (EINVAL);
        }
@@ -257,13 +245,14 @@ shmctl(p, uap, retval)
 /*
  * Attach to shared memory segment.
  */
 /*
  * Attach to shared memory segment.
  */
+struct shmat_args {
+       int     shmid;
+       caddr_t shmaddr;
+       int     shmflg;
+};
 shmat(p, uap, retval)
        struct proc *p;
 shmat(p, uap, retval)
        struct proc *p;
-       register struct args {
-               int     shmid;
-               caddr_t shmaddr;
-               int     shmflg;
-       } *uap;
+       register struct shmat_args *uap;
        int *retval;
 {
        register struct shmid_ds *shp;
        int *retval;
 {
        register struct shmid_ds *shp;
@@ -339,12 +328,13 @@ shmat(p, uap, retval)
 /*
  * Detach from shared memory segment.
  */
 /*
  * Detach from shared memory segment.
  */
+struct shmdt_args {
+       caddr_t shmaddr;
+};
 /* ARGSUSED */
 shmdt(p, uap, retval)
        struct proc *p;
 /* ARGSUSED */
 shmdt(p, uap, retval)
        struct proc *p;
-       struct args {
-               caddr_t shmaddr;
-       } *uap;
+       struct shmdt_args *uap;
        int *retval;
 {
        register struct shmdesc *shmd;
        int *retval;
 {
        register struct shmdesc *shmd;