Date: Tue, 31 May 2005 09:41:18 -0700 From: Maksim Yevmenkin <maksim.yevmenkin@savvis.net> To: Norbert Koch <NKoch@demig.de> Cc: freebsd-hackers@freebsd.org Subject: Re: mutual exclusion in vkbd Message-ID: <429C93AE.8060509@savvis.net> In-Reply-To: <000001c565f6$d46b7720$4801a8c0@ws-ew-3.W2KDEMIG>
index | next in thread | previous in thread | raw e-mail
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) and you should be done. its not really required to store interrupt mask in softc structure, but this way its less changes to the code. thanks, maxhome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?429C93AE.8060509>
