lkml.org 
[lkml]   [2004]   [Jun]   [3]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] Re: SERIO_USERDEV patch for 2.6
FromSau Dan Lee <>
Date03 Jun 2004 14:21:14 +0200
>>>>> "Tuukka" == Tuukka Toivonen <tuukkat@ee.oulu.fi> writes:


    >> On Sun, 30 May 2004, Vojtech Pavlik wrote:
    >>> Coexisting would mean that when someone wants to open the raw
    >>> device, the serio layer would disconnect the psmouse driver,
    >>> and give control to the raw device instead. I believe that
    >>> could work.

    Tuukka> Done, with slight modification: if the device is opened in
    Tuukka> read-only mode, the kernel drivers are not
    Tuukka> disconnected. This way the serio port could be controlled
    Tuukka> via IOCTL even when assigned to kernel drivers, if it ever
    Tuukka> becomes useful. Useful also for debugging etc.

Thanks for the great work, Tuukka!  :)

I've  just   tried  it.   I   loaded  'psmouse'  and   'mousedev'  and
/proc/bus/input/devices does show the PS/2 AUX port being treated as a
mouse  device,   handled  by  'mousedev'.    Then,  I  start   gpm  on
/dev/misc/isa0060_serio1, and it works successfully.  The mouse device
disappears from /proc/bus/input/devices.  When  I kill gpm, the kernel
gets  control   again  and  the   mouse  device  shows  up   again  in
/proc/.../devices.



    Tuukka> The last change I made converts slashes '/' into
    Tuukka> underscores '_' (so eg. isa0060/serio0 is changed to
    Tuukka> isa0060_serio0 in /proc/misc, /dev with devfs, and /sys)
    Tuukka> because Sau Dan Lee reported that slashes don't work well
    Tuukka> with sysfs.

It now works in sysfs.

        $ cat /sys/class/misc/psaux/dev 
        10:1
        $ cat /sys/class/misc/isa0060_serio1/dev 
        10:63


    Tuukka> I tested the patch in a couple of machines, especially the
    Tuukka> new features.  Seems to work finely.

Works fine on mine, too.



    Tuukka> Compared to Dmitry's rawdev patch, this has a number of
    Tuukka> advantages:

    Tuukka> - Supports all serio ports without any additional kernel
    Tuukka> parameters. Binding between kernel/user driver is done
    Tuukka> automatically.

This is wonderful!  Or consider  my serio_switch patch.  We don't need
to want for  2.6.10 when they would eventually  add that together with
the sysfs interface.


    Tuukka> - Supports multiple drivers on the same port, unlike
    Tuukka> Dmitry's rawdev, which works just similarly as 2.4.x psaux
    Tuukka> which didn't work with e.g.  X11 and gpm together without
    Tuukka> a repeater feed, because multiple drivers are fighting for
    Tuukka> the byte streams.

On my system X and gpm do live with each other without conflicts, both
accessing  /dev/psaux  (either  on  2.4 or  2.6+SERIO_USERDEV).   Both
programs  can detect  VT  switching  and close  the  port when  losing
"focus".


    Tuukka> (Doesn't still allow multiple kernel drivers nor a kernel
    Tuukka> driver with a complete user drivers with write access
    Tuukka> since the required infrastructure is missing in serio.c
    Tuukka> aka serio-core.c: kernel internal drivers can't lock a
    Tuukka> port).

That's a part of the design  of the whole serio subsystem.  Unless the
design is reworked, you can't  do much about it.  The basic assumption
is: each port can be connected  to only one device, whether the device
is in kernel  or userland.  That our SERIO_USERDEV  allows userland to
overhear (O_RDONLY) the traffic is a special bonus feature.



-- 
Sau Dan LEE                     李守敦(Big5)                    ~{@nJX6X~}(HZ) 
E-mail: danlee@informatik.uni-freiburg.de
Home page: http://www.informatik.uni-freiburg.de/~danlee

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:03    [from the cache]
©2003-2008