Merilainen, Jussi (GE Healthcare) wrote: > > > I'm porting a PCI driver for a custom board from VxWorks to Xenomai/Linux. My > goal is to keep the driver as much as possible in user-space. Implementing > the HW interrupt handler should be quite straight forward as presented in > 'Writing user-space device drivers' in Native-API-Tour manual. > My concern is the PCI DMA transfer. Does the Xenomai API provide any support > for this in user-space? Does anyone have experience on this subject?
Actually, this need not be a Xenomai-specific issue. User space device drivers are of increasing common interest in the Linux community. I only collected some projects so far, I did not dig into the APIs: - libpci as part of the pciutils provides ways to access device information, don't know if it also allows to map DMA memory to user space. - The Gelato project  developed some libs and kernel patches for user level drivers. - Don't know if it is related to the former, but this research project  implemented user-level drivers as well. - David Schleef's usddk  is another user space driver development lib, but it looks a bit premature. Why am I listing these? Xenomai is not providing PCI access functions, and I'm not sure yet if it actually has to do this on its own (in user space, in kernel definitely not). All init/cleanup work can perfectly use standard Linux infrastructure - if there is one of course. Only services which may need rescheduling in time-critical contexts (IRQ handlers, RT tasks) have to be mapped on the Xenomai infrastructure. Nevertheless, user space support for RTDM, Xenomai's driver model, is planned, so I'm already collecting input on what services are additionally required and may have to be provided by RTDM itself (and not some third-party lib). So, if you find some solution or anyone else has ideas, please let me know. > Another thing is the Device I/O handling from user-space. Simple question: > how do I perform read/write operations? In VxWorks, I have for example > following function for reading an I/O register of the board: > ... On x86, iopl() or ioperm() opens in/out to a user space process. Memory mapped I/O should be accessible via /dev/mem on any arch. Jan  http://www.gelato.unsw.edu.au/IA64wiki/UserLevelDrivers  http://www.ertos.nicta.com.au/research/uldd/  http://www.schleef.org/usddk/
Description: OpenPGP digital signature
_______________________________________________ Xenomai-core mailing list Xenomaiemail@example.com https://mail.gna.org/listinfo/xenomai-core