Re: 2G+ sysv shm segments

From: Igor Sysoev <is_at_rambler-co.ru>
Date: Tue, 16 Oct 2007 23:53:43 +0400
On Wed, Oct 17, 2007 at 05:38:43AM +1000, Peter Jeremy wrote:

> On 2007-Oct-15 18:17:14 +0400, Igor Sysoev <is_at_rambler-co.ru> wrote:
> >more than 2G. The attached patches against 6.x and 7.x allow to create 2G+
> >segments.
> 
> Useful, thanks.
> 
> >--- src/sys/sys/shm.h	2007-09-12 23:33:39.000000000 +0400
> >+++ src/sys/sys/shm.h	2007-10-15 17:42:38.000000000 +0400
> >_at__at_ -77,7 +77,7 _at__at_
> > 
> > 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 */
> ...
> >--- src/usr.bin/ipcs/ipcs.c	2007-09-12 23:32:25.000000000 +0400
> >+++ src/usr.bin/ipcs/ipcs.c	2007-10-15 17:29:06.000000000 +0400
> >_at__at_ -439,7 +439,7 _at__at_
> > 						    kshmptr->u.shm_nattch);
> > 
> > 					if (option & BIGGEST)
> >-						printf(" %12d",
> >+						printf(" %12ld",
> > 						    kshmptr->u.shm_segsz);
> 
> Note that size_t is always 'unsigned' and translates to 'int' rather
> than 'long' on i386 so this printf will report a warning.  I suggest
> printf(" %12lu", (unsigned long)kshmptr->u.shm_segsz); or similar.

Here should be %zu.

However, this patch can not be commited even to 7/8, because it does not
preserve binary compatibility for shmctl(IPC_STAT).

It seems that should be new shmctl syscall.


-- 
Igor Sysoev
http://sysoev.ru/en/
Received on Tue Oct 16 2007 - 17:53:52 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:19 UTC