From owner-freebsd-hackers@FreeBSD.ORG Fri Feb 16 12:56:07 2007 Return-Path: X-Original-To: hackers@freebsd.org Delivered-To: freebsd-hackers@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A79BA16A401 for ; Fri, 16 Feb 2007 12:56:07 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [209.31.154.42]) by mx1.freebsd.org (Postfix) with ESMTP id 7A53E13C494 for ; Fri, 16 Feb 2007 12:56:02 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [209.31.154.41]) by cyrus.watson.org (Postfix) with ESMTP id 127B5476A7; Fri, 16 Feb 2007 07:56:02 -0500 (EST) Date: Fri, 16 Feb 2007 12:56:02 +0000 (GMT) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: Pascal Hofstee In-Reply-To: <1171556087.9285.1.camel@chekov> Message-ID: <20070216125514.O38234@fledge.watson.org> References: <45C04593.2090704@gmail.com> <20070131085206.GW892@turion.vk2pj.dyndns.org> <45C06167.60401@gmail.com> <86odofjyua.fsf@dwp.des.no> <20070131105024.L91177@fledge.watson.org> <20070215133647.V79543@fledge.watson.org> <1171556087.9285.1.camel@chekov> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: Dag-Erling =?ISO-8859-1?Q?Sm=F8rgrav?= , hackers@freebsd.org Subject: Re: a question regarding X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Feb 2007 12:56:07 -0000 On Thu, 15 Feb 2007, Pascal Hofstee wrote: > On Thu, 2007-02-15 at 13:41 +0000, Robert Watson wrote: >> Unfortunately, things are a bit more tricky. The problem is not so much >> the API, where converting size_t/int is a relative non-event, rather, the >> ABI. By changing the size of a field in a data structure, you may change >> the layout of the structure, and hence the offset of other fields. This >> offset information is compiled into binaries that access the structure -- >> hence being part of the ABI. On i386, the change from int to size_t >> doesn't modify the ABI, as both int and size_t are 32-bit. However, on >> 64-bit platforms, int is 32-bit and size_t is 64-bit: >> >> sledge:/tmp> uname -a >> FreeBSD sledge.freebsd.org 7.0-CURRENT FreeBSD 7.0-CURRENT #898: Wed Feb 14 >> 14:20:16 UTC 2007 root@sledge.freebsd.org:/h/src/sys/amd64/compile/SLEDGE >> amd64 >> sledge:/tmp> ./size_t >> sizeof int: 4 >> sizeof size_t: 8 >> >> In practice, this means that all of the later fields in the data structure >> will be offset by 4 bytes. This will affect any application that accesses >> later fields in the structure but isn't recompiled. This is why DES and I >> have been discussing this change as requiring kernel compatibility code, >> which would provide new system calls working with the new layout, and >> retain old system calls working with the old layout. So we'd need to >> provide a new shmctl() with the new structure, and an oshmctl() with the >> old layout. While doing that, it makes sense to do all the other >> ABI-related things that we'd like to get out of the way, such as fixing the >> types in shm_perm. > > I understand ... i'll leave this up to you guys .. you have obviously a lot > more hands on experience in these kinds of matters :) Well -- don't let this discourage you from working on it, I'm just pointing out that there are some more details to work on before it will be done :-). I'm happy to advise further as the work moves along, but unfortunately don't have time to do it myself at this point. It's something I would very much like to see happen, though! Robert N M Watson Computer Laboratory University of Cambridge