From owner-cvs-all@FreeBSD.ORG Mon May 5 08:53:29 2003 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6D09F37B401; Mon, 5 May 2003 08:53:29 -0700 (PDT) Received: from salmon.maths.tcd.ie (salmon.maths.tcd.ie [134.226.81.11]) by mx1.FreeBSD.org (Postfix) with SMTP id 7BFF743FB1; Mon, 5 May 2003 08:53:27 -0700 (PDT) (envelope-from iedowse@maths.tcd.ie) Received: from walton.maths.tcd.ie by salmon.maths.tcd.ie with SMTP id ; 5 May 2003 16:53:26 +0100 (BST) To: Martin Blapp In-Reply-To: Your message of "Mon, 05 May 2003 02:22:58 PDT." <200305050922.h459Mwdu049419@repoman.freebsd.org> Date: Mon, 05 May 2003 16:53:26 +0100 From: Ian Dowse Message-ID: <200305051653.aa98706@salmon.maths.tcd.ie> cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/compat/linux linux_ipc.c src/sys/sys syscallsubr.h src/sys/kern sysv_shm.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 May 2003 15:53:29 -0000 In message <200305050922.h459Mwdu049419@repoman.freebsd.org>, Martin Blapp writ es: > Change the semantics of sysv shm emulation to take a additional > argument to the functions shm{at,ctl}1 and shm_find_segment_by_shmid{x}. > The BSD semantics didn't allow the usage of shared segment after > being marked for removal through IPC_RMID. I had a few incomplete stack-gap patches in this area, so I was just looking over this change while merging. The shmctl() system call is unfortunately quite messy to deal with, since its `struct shmid_ds *buf' argument can point at a different type of structure (struct shm_info) for some commands. BTW, it seems that these additional commands (IPC_INFO, SHM_INFO) and also SHM_STAT are not documented in shmctl(2) so they really only exist for use by the Linux emulator. A few comments about these changes: - shmctl() now assumes that it can fit a `struct shm_info' into `struct shmid_ds buf'. While it does fit now, it would be much better to use a union so as not to need this assumption. - The `bufsz' argument to kern_shmctl() seems to be unnecessary, since callers are required to know already how much space is required - they supplied that space. It would be better just to have shmctl() switch on the command code and then copyout sizeof(struct shm_info) or sizeof(struct shm_info) accordingly. - Is the 'if (error) {td->td_retval[0] = -1;}' at the end of shmctl() really necessary? The syscall() code should ignore td->td_retval[0] in the error case. Ian