Further shared memory adjustments to be in line with POSIX.
authorSascha Wildner <saw@online.de>
Sat, 29 Oct 2011 06:12:38 +0000 (08:12 +0200)
committerSascha Wildner <saw@online.de>
Sat, 29 Oct 2011 06:12:38 +0000 (08:12 +0200)
* shmat()'s and shmdt()'s addr argument shall be const.

* Make struct shmid_ds's shm_nattch unsigned and define the shmatt_t
  type for it.

* More manual page adjustments.

lib/libc/sys/shmat.2
lib/libc/sys/shmctl.2
lib/libc/sys/shmget.2
sys/kern/syscalls.master
sys/sys/shm.h
sys/sys/sysproto.h

index ea64294..b6b9dd5 100644 (file)
@@ -24,9 +24,8 @@
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
 .\" $FreeBSD: src/lib/libc/sys/shmat.2,v 1.8.2.6 2001/12/14 18:34:01 ru Exp $
-.\" $DragonFly: src/lib/libc/sys/shmat.2,v 1.2 2003/06/17 04:26:47 dillon Exp $
 .\"
-.Dd August 2, 1995
+.Dd October 29, 2011
 .Dt SHMAT 2
 .Os
 .Sh NAME
@@ -41,9 +40,9 @@
 .In sys/ipc.h
 .In sys/shm.h
 .Ft void *
-.Fn shmat "int shmid" "void *addr" "int flag"
+.Fn shmat "int shmid" "const void *addr" "int flag"
 .Ft int
-.Fn shmdt "void *addr"
+.Fn shmdt "const void *addr"
 .Sh DESCRIPTION
 .Fn Shmat
 attaches the shared memory segment identified by
index fcabedc..b251acc 100644 (file)
@@ -24,9 +24,8 @@
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
 .\" $FreeBSD: src/lib/libc/sys/shmctl.2,v 1.9.2.4 2001/12/14 18:34:01 ru Exp $
-.\" $DragonFly: src/lib/libc/sys/shmctl.2,v 1.2 2003/06/17 04:26:47 dillon Exp $
 .\"
-.Dd July 17, 1995
+.Dd October 29, 2011
 .Dt SHMCTL 2
 .Os
 .Sh NAME
@@ -97,12 +96,14 @@ struct is defined as follows:
 .\" with nroff, but otherwise it's straight from sys/shm.h
 .\"
 .Bd -literal
+typedef unsigned int shmatt_t;
+
 struct shmid_ds {
     struct ipc_perm shm_perm;   /* operation permission structure */
-    int             shm_segsz;  /* size of segment in bytes */
+    size_t          shm_segsz;  /* size of segment in bytes */
     pid_t           shm_lpid;   /* process ID of last shared memory op */
     pid_t           shm_cpid;   /* process ID of creator */
-    short           shm_nattch; /* number of current attaches */
+    shmatt_t        shm_nattch; /* number of current attaches */
     time_t          shm_atime;  /* time of last shmat() */
     time_t          shm_dtime;  /* time of last shmdt() */
     time_t          shm_ctime;  /* time of last change by shmctl() */
index b86711d..ee89b26 100644 (file)
@@ -24,9 +24,8 @@
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
 .\" $FreeBSD: src/lib/libc/sys/shmget.2,v 1.8.2.6 2001/12/14 18:34:01 ru Exp $
-.\" $DragonFly: src/lib/libc/sys/shmget.2,v 1.2 2003/06/17 04:26:47 dillon Exp $
 .\"
-.Dd July 3, 1995
+.Dd October 29, 2011
 .Dt SHMGET 2
 .Os
 .Sh NAME
index ab0183e..5379c02 100644 (file)
                            int msgflg); }
 227    STD     BSD     { int msgrcv(int msqid, void *msgp, size_t msgsz, \
                            long msgtyp, int msgflg); }
-228    STD     BSD     { caddr_t shmat(int shmid, void *shmaddr, int shmflg); }
+228    STD     BSD     { caddr_t shmat(int shmid, const void *shmaddr, \
+                           int shmflg); }
 229    STD     BSD     { int shmctl(int shmid, int cmd, \
                            struct shmid_ds *buf); }
-230    STD     BSD     { int shmdt(void *shmaddr); }
+230    STD     BSD     { int shmdt(const void *shmaddr); }
 231    STD     BSD     { int shmget(key_t key, size_t size, int shmflg); }
 ;
 232    STD     POSIX   { int clock_gettime(clockid_t clock_id, \
index 3fbe13d..1ace4e6 100644 (file)
@@ -1,5 +1,4 @@
 /* $FreeBSD: src/sys/sys/shm.h,v 1.14 1999/12/29 04:24:46 peter Exp $ */
-/* $DragonFly: src/sys/sys/shm.h,v 1.6 2006/09/30 20:03:44 swildner Exp $ */
 /*     $NetBSD: shm.h,v 1.15 1994/06/29 06:45:17 cgd Exp $     */
 
 /*
 #define SHM_R       (IPC_R)
 #define SHM_W       (IPC_W)
 
+typedef unsigned int   shmatt_t;
 
 struct shmid_ds {
        struct ipc_perm shm_perm;       /* operation permission structure */
        size_t          shm_segsz;      /* size of segment in bytes */
        pid_t           shm_lpid;   /* process ID of last shared memory op */
        pid_t           shm_cpid;       /* process ID of creator */
-       int             shm_nattch;     /* number of current attaches */
+       shmatt_t        shm_nattch;     /* number of current attaches */
        time_t          shm_atime;      /* time of last shmat() */
        time_t          shm_dtime;      /* time of last shmdt() */
        time_t          shm_ctime;      /* time of last change by shmctl() */
@@ -96,10 +96,10 @@ void        shmfork (struct proc *, struct proc *);
 
 __BEGIN_DECLS
 int shmsys (int, ...);
-void *shmat  (int, void *, int);
+void *shmat  (int, const void *, int);
 int shmget (key_t, size_t, int);
 int shmctl (int, int, struct shmid_ds *);
-int shmdt  (void *);
+int shmdt  (const void *);
 __END_DECLS
 
 #endif /* !_KERNEL */
index 9414a77..d2e1b3b 100644 (file)
@@ -1112,7 +1112,7 @@ struct    shmat_args {
        struct sysmsg sysmsg;
 #endif
        int     shmid;  char shmid_[PAD_(int)];
-       void *  shmaddr;        char shmaddr_[PAD_(void *)];
+       const void *    shmaddr;        char shmaddr_[PAD_(const void *)];
        int     shmflg; char shmflg_[PAD_(int)];
 };
 struct shmctl_args {
@@ -1127,7 +1127,7 @@ struct    shmdt_args {
 #ifdef _KERNEL
        struct sysmsg sysmsg;
 #endif
-       void *  shmaddr;        char shmaddr_[PAD_(void *)];
+       const void *    shmaddr;        char shmaddr_[PAD_(const void *)];
 };
 struct shmget_args {
 #ifdef _KERNEL