在内核和用户空间之间共享内存

时间:2018-01-04 02:23:31

标签: linux linux-kernel linux-device-driver embedded-linux

我在Zynq处理器(ARM)上有一个自定义FPGA模块的驱动程序,它使用vm_insert_page()保留的mmap内存将数据传递到用户空间,主要遵循{{3}的指令对这个问题不重要的一些小调整。

我现在的问题是看起来我的个人缓冲区仅限于一个页面,只有4096字节,我需要能够发送一个比这个更大的数据包。我不需要添加逻辑来将两侧的多个缓冲区组合在一起,只需要传输单个缓冲区就非常好了。那么,是否有一些方法可以使缓冲区大于页面?我能用某种方式用remap_pfn_range()替换vm_insert_page()吗?

问题似乎来自这里:

Option Explicit

Sub FillMissing()
    ' 04 Jan 2018

    Dim Rng As Range
    Dim Service As Variant
    Dim Rl As Long                              ' last row
    Dim R As Long                               ' row counter

    Application.ScreenUpdating = False
    With ActiveSheet
        Rl = Application.Max(.Cells(.Rows.Count, "C").End(xlUp).Row, _
                             .Cells(.Rows.Count, "D").End(xlUp).Row)
        For R = 2 To Rl                         ' start in row 2
            Set Rng = Range(.Cells(R, "A"), .Cells(R, "B"))
            With Rng
                If Application.CountA(Rng) Then
                    Service = .Value
                Else
                    .Value = Service
                End If
            End With
        Next R
    End With
    Application.ScreenUpdating = True
End Sub

0 个答案:

没有答案