Chris Johns commented on a discussion: 
https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/1243#note_150982


This is device driver. It happens to need drivers for specific hardware to 
work. This is similer to PCIe drivers are needed to make the PCI driver frame 
work work. It has been implemented as a framework to ease usability. The module 
could be renamed to be `dev/io` and it can form a slightly more generic 
interface if IO peek and poke is added. FreeBSD has a similar approach with 
[man 
io](https://man.freebsd.org/cgi/man.cgi?query=io&apropos=0&sektion=0&manpath=FreeBSD+15.0-RELEASE+and+Ports.quarterly&format=html)
 and it's implementation is in 
[sys/dev/io/iodev.c](https://github.com/freebsd/freebsd-src/blob/main/sys/dev/io/iodev.c).

We do not need the interface to manage privileged access as FreeBSD does 
however it does provide us with the ability to manage abstractions where the IO 
area an application needs to access can and does vary. To date in RTEMS we have 
relied on hardware and BSPs returning the same address and us dealing with that 
be using defines in BSPs or applications. That is a hack and a bad one.

This API is not for `mmap`. You can use `mmap` to get access to IO regions but 
that is your choice in your application. Support to use `mmap` to something we 
felt provided an easier interface for those coming to RTEMS from Unix. It does 
not little more.

## Use cases

1. PCIe where we can have devices on a bus on difference BSPs presenting 
different IO addresses. This driver presents the same device nodes and a 
consistent interface to an application can find the IO space and use it.
2. VME bus for A16, A24 and A32 space. EPICS needs access to these address 
spaces to read and write to slave boards. Each board has a different address in 
memory for these IO spaces. If we provide an IO driver we can provide a 
consistent interface EPICS can use with out the need for conditional builds 
against specific hardware. Andrew Johnson recently asked if we support anything 
that can do this.

-- 
View it on GitLab: 
https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/1243#note_150982
You're receiving this email because of your account on gitlab.rtems.org.


_______________________________________________
bugs mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/bugs

Reply via email to