内存映射(mmap)Java / Scala中的Linux设备驱动程序

时间:2015-05-08 20:07:01

标签: java scala java-native-interface linux-device-driver mmap

我有一个控制特定硬件的设备驱动程序。我想直接从通过MMAP在Java / Scala中运行的用户应用程序访问硬件。这是我所拥有的代码的简化版本:

val fc = new RandomAccessFile(new File("/dev/device"),"rw").getChannel()
val buf = fc.map(FileChannel.MapMode.READ_WRITE,0,bufferSize)
fc.read(buf)

这是我运行代码时遇到的错误:

java.io.IOException: Invalid argument
at sun.nio.ch.FileDispatcherImpl.truncate0(Native Method)
at sun.nio.ch.FileDispatcherImpl.truncate(FileDispatcherImpl.java:80)
at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:858)
at Main$$anon$1.<init>(mmap.Scala:12)

我已经在这里看了一篇类似的帖子:How to memory map (mmap) a linux block device (e.g. /dev/sdb) in Java?描述了这个问题;但是,没有建议如何解决它。我知道Java Native Interface(JNI),但对我来说直接从Java框架访问硬件至关重要。任何人都可以建议一种方法来修改Java源文件来解决这个问题吗?

0 个答案:

没有答案