Subject: Re: I/O maps and user-level device drivers
To: Travis Hassloch <travis@evtech.com>
From: Michael Galassi <nerd@percy.rain.com>
List: port-i386
Date: 12/08/1995 17:00:31
>I remember reading something in the Intel uprocessor book about tasks
>having a "I/O map" that could allow access to certain areas of I/O space.
>I don't remember how fine a granularity this map had (per-word?) but it
>got me thinking.

>How could one allow (in an aethetically pleasing way) the Unix kernel to
>start a particular process with (or allow it to get) a particular I/O
>privilege map or a fixed virtual-to-physical mapping (to grab memory-mapped
>I/O space)?  Would an a.out field and [e]uid-check be appropriate?

>I _think_ Linux may have some kind of mechanism to this effect, since I
>vaguely recall some kind of way that they allow procs to access video
>memory directly, but I could be wrong.  Unfortunately, I'm so far out
>of the Linux loop I wouldn't know where to start looking.

If performance is not an issue I've toyed with the idea of a
/dev/iospace directory containing one cdev per i/o port.  Permisions
could be controled via the normal UNIX filesystem mechanisms.  The
code would be trivialy simple to produce.

Of course this sort of interface with one syscall per read/write
transaction would be extremely slow and only apropriate for low
volume use.  Still, for things such as prototyping device drivers
in user space, UPS monitoring, house monitoring/controling the
performance might not be much of an issue.

-michael
-- 
Michael Galassi   nerd@percy.rain.com   http://percy.rain.com/~nerd/