From owner-freebsd-current@FreeBSD.ORG Wed May 10 04:01:57 2006 Return-Path: X-Original-To: current@freebsd.org Delivered-To: freebsd-current@FreeBSD.ORG Received: from [127.0.0.1] (localhost [127.0.0.1]) by hub.freebsd.org (Postfix) with ESMTP id 4A65D16A402; Wed, 10 May 2006 04:01:56 +0000 (UTC) (envelope-from davidxu@freebsd.org) Message-ID: <446165B5.7030006@freebsd.org> Date: Wed, 10 May 2006 12:01:57 +0800 From: David Xu User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.12) Gecko/20060302 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Daniel Eischen References: <20060506150622.C17611@fledge.watson.org> <20060509181302.GD3636@eucla.lemis.com> <20060509182330.GB92714@xor.obsecurity.org> <200605100726.28243.davidxu@freebsd.org> <44613469.2050000@freebsd.org> <4461522D.9060405@freebsd.org> In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Cc: current@freebsd.org Subject: Re: Fine-grained locking for POSIX local sockets (UNIX domain sockets) X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 May 2006 04:01:57 -0000 Daniel Eischen wrote: > > On Wed, 10 May 2006, David Xu wrote: > >> One of the problems to implement it is that atomic operations, >> if there are multiple integer needs to be updated by kernel, >> userland maybe gets an inconsistent result, the way to avoid the >> problem is using two generation numbers. >> >> http://gsu.linux.org.tr/~mpekmezci/kernelapi/unitedlinux/arch/x86_64/kernel/vsyscall.c.html >> >> check do_vgettimeofday(struct timeval * tv): >> >> Another problem is how you tell userland the address of the kernel >> page ? do you use fixed address or tell it via program headers like >> the PT_TLS set by kernel, check /usr/src/lib/libc/gen/tls.c. > > > Can you not make a simple pseudo device driver and mmap the page? > mmap is fine if you don't care binary compatible, exporting a kernel page which can be executed by userland is more flexible, kernel can change it freely without having to change libc.