From owner-freebsd-arch@FreeBSD.ORG Thu Jan 3 00:26:08 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D04E416A417; Thu, 3 Jan 2008 00:26:08 +0000 (UTC) (envelope-from phk@critter.freebsd.dk) Received: from phk.freebsd.dk (phk.freebsd.dk [130.225.244.222]) by mx1.freebsd.org (Postfix) with ESMTP id 6B16E13C4DB; Thu, 3 Jan 2008 00:26:08 +0000 (UTC) (envelope-from phk@critter.freebsd.dk) Received: from critter.freebsd.dk (unknown [192.168.61.3]) by phk.freebsd.dk (Postfix) with ESMTP id 038B117105; Thu, 3 Jan 2008 00:26:06 +0000 (UTC) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.14.2/8.14.2) with ESMTP id m030Q6ju002297; Thu, 3 Jan 2008 00:26:06 GMT (envelope-from phk@critter.freebsd.dk) To: Andre Oppermann From: "Poul-Henning Kamp" In-Reply-To: Your message of "Thu, 03 Jan 2008 01:21:30 +0100." <477C2A8A.8090604@freebsd.org> Date: Thu, 03 Jan 2008 00:26:06 +0000 Message-ID: <2296.1199319966@critter.freebsd.dk> Sender: phk@critter.freebsd.dk Cc: Attilio Rao , arch@freebsd.org, Robert Watson , freebsd-arch@freebsd.org Subject: Re: New "timeout" api, to replace callout X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jan 2008 00:26:09 -0000 In message <477C2A8A.8090604@freebsd.org>, Andre Oppermann writes: >>>>> I fear we have to go for the latter. Getting a non-sleeping callout >>>>> drain seems to be non-trivial. >>>> There is a crucial difference between "non-sleeping" and "not sleeping >>>> on my lock" that you should be very careful about in this context. >>>> >>>> Which is your requirement ? >>> Calling timeout_drain() must not sleep and not drop the lock in this >>> context (while making any pending timeout go away forever). >> >> Ok, so if the timeouts callback function is running you propose to >> do what ? spin until it returns ? > >As long as the spinning is bounded [...] I don't have a perfect solution >handy. That's why I try to state the requirement and hope the timeout >gurus can work out how to do it. ;-) It's all Alan Turings fault :-) You can't have that, it's that simple. What I'm proposing is that your thread will sleep on a plain, but unrelated mutex (internal to the timeout code) until the function comes back. Based on your description above, you won't be able to tell the any difference between this and what you wish for. -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence.