Re: mutual exclusion in vkbd

From: Alexander Kabaev (kan_at_freebsd.org)
Date: 05/31/05

  • Next message: Maksim Yevmenkin: "Re: mutual exclusion in vkbd"
    Date: Tue, 31 May 2005 20:19:08 +0000
    To: Maksim Yevmenkin <maksim.yevmenkin@savvis.net>
    
    

    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.

    --
    Alexander Kabaev
    _______________________________________________
    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"
    

  • Next message: Maksim Yevmenkin: "Re: mutual exclusion in vkbd"

    Relevant Pages