From owner-freebsd-hackers@FreeBSD.ORG Wed Jun 1 06:11:36 2005 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D6D2316A41C; Wed, 1 Jun 2005 06:11:36 +0000 (GMT) (envelope-from NKoch@demig.de) Received: from server.absolute-media.de (server.absolute-media.de [213.239.231.9]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4945343D48; Wed, 1 Jun 2005 06:11:35 +0000 (GMT) (envelope-from NKoch@demig.de) Received: from localhost (unknown [127.0.0.1]) by server.absolute-media.de (Postfix) with ESMTP id 4A00979C68; Wed, 1 Jun 2005 08:11:34 +0200 (CEST) Received: from server.absolute-media.de ([127.0.0.1]) by localhost (server [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 05662-07; Wed, 1 Jun 2005 08:11:29 +0200 (CEST) Received: from firewall.demig (p50838D1A.dip0.t-ipconnect.de [80.131.141.26]) by server.absolute-media.de (Postfix) with ESMTP id 716EF712B0; Wed, 1 Jun 2005 08:11:29 +0200 (CEST) Received: from ws-ew-3 (ws-ew-3.w2kdemig [192.168.1.72]) by firewall.demig (8.13.4/8.13.1) with SMTP id j5168Vgt093788; Wed, 1 Jun 2005 08:08:31 +0200 (CEST) (envelope-from NKoch@demig.de) From: "Norbert Koch" To: "Maksim Yevmenkin" , "Alexander Kabaev" Date: Wed, 1 Jun 2005 08:08:29 +0200 Message-ID: <002701c56670$54ee4980$4801a8c0@ws-ew-3.W2KDEMIG> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0 Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2120.0 In-Reply-To: <429CD013.7070809@savvis.net> X-Virus-Scanned: by amavisd-new X-Virus-Scanned: by amavisd-new at absolute-media.de Cc: freebsd-hackers@freebsd.org Subject: RE: mutual exclusion in vkbd 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: Wed, 01 Jun 2005 06:11:37 -0000 Thank you all. I'll try it. Norbert > -----Original Message----- > From: owner-freebsd-hackers@freebsd.org > [mailto:owner-freebsd-hackers@freebsd.org]On Behalf Of Maksim Yevmenkin > Sent: Tuesday, May 31, 2005 10:59 PM > To: Alexander Kabaev > Cc: Norbert Koch; freebsd-hackers@freebsd.org > Subject: Re: mutual exclusion in vkbd > > > Alexander Kabaev wrote: > > On Tue, May 31, 2005 at 09:41:18AM -0700, Maksim Yevmenkin wrote: > > > >>Norbert, > >> > >> > >>>I am currently trying to backport vkbd to FreeBSD 4. > >> > >>ok > >> > >> > >>>Maksim Yevmenkin uses mtx_lock()/mtx_unlock() for > >>>protecting access to data structures under FreeBSD 5/6 > >>>between the device functions and the kernel thread. > >>> > >>>How should I best do this under FreeBSD 4? > >>> > >>>Would something like splhigh() work in that context? > >>>Or should I use lockmgr with LK_EXCLUSIVE/LK_RELEASE? > >>>Is there any (pseudo)process context inside a kernel task? > >> > >>spltty() is what you probably need to use. you could just adjust the > >>following defines like > >> > >>#define VKBD_LOCK_DECL int > >>#define VKBD_LOCK_INIT(s) /* noop */ > >>#define VKBD_LOCK_DESTROY(s) /* noop */ > >>#define VKBD_LOCK(s) (s)->ks_lock = spltty() > >>#define VKBD_UNLOCK(s) splx((s)->ks_lock) > >>#define VKBD_LOCK_ASSERT(s, w) > >>#define VKBD_SLEEP(s, f, d, t) \ > >> tsleep(&(s)->f, PCATCH | (PZERO + 1), d, t) > > > > The code above will probably crash the kernel in many spectacular and > > unpredictable ways. You will need to save interrupt flags > locally to each > > VKBD_LOCK caller or they will end up restoring each other's flags. > > yes, you are correct. my bad :( thanks for catching this > > max > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" >