草庐IT

dma_alloc_coherent

全部标签

linux - 将 DMA 缓冲区写入内存映射文件

我需要在嵌入式Linux(2.6.37)中尽可能快地将传入的DMA缓冲区写入到HD分区作为原始设备/dev/sda1。缓冲区按要求对齐,长度相等,为512KB。该过程可能会持续很长时间并填充多达例如256GB的数据。我需要使用内存映射文件技术(O_DIRECT不适用),但无法理解如何执行此操作的确切方法。所以,在伪代码“正常”写作中:fd=open(/dev/sda1",O_WRONLY);while(1){p=GetVirtualPointerToNewBuffer();if(InputStopped())break;write(fd,p,BLOCK512KB);}现在,我将非常感谢

linux - git 守护进程 : "unable to allocate any listen sockets on host (null) port 9418"

在Debiansqueeze上,我收到系统日志错误:unabletoallocateanylistensocketsonhost(null)port9418而且我也不能远程克隆。文件/etc/service/git-daemon/run:"$(git--exec-path)"/git-daemon--verbose--base-path=/var/cache/git--detach--syslog--reuseaddr--export-allnetstat-l|grepgit输出:tcp00*:git*:*LISTENtcp600[::]:git[::]:*LISTEN我目前正在使用s

linux - 是否有用于 FPGA 的 PCIe 的 DMA Linux 内核驱动程序示例?

我想在内核空间中编写一个驱动程序:在嵌入式系统(使用powerPC)中与通过PCIe连接的FPGA进行通信。它使用DMA将信息从FPGA传输到RAM。用户程序必须访问这些信息。我需要一些类似的例子来指导我。有人知道我在哪里可以找到一些资源吗? 最佳答案 Connectal(http://www.connectal.org)是一个开源框架,支持用户空间软件与Xilinx或AlteraFPGA通信。实际上,这种通信很少涉及设备驱动程序。Connectal支持通过内存映射硬件FIFO在软件和硬件之间传递消息,并支持通过DMA从FPGA共享

c - fork 失败 : Cannot allocate memory

我有一个在linux机器上运行的程序。它fork一个进程来发送邮件,并经常记录fork失败消息,指出它无法分配内存。当我检查驻留内存的大小时,它大约为12Gb(交换在这台机器上配置为只有1Gb)。有什么方法可以确定这一大块内存不是泄漏,而只是内存增长?此外,是否存在可以调整的系统限制,以便我不会遇到任何fork失败? 最佳答案 要检查内存泄漏,您可能希望在Valgrind下运行该程序:http://valgrind.org要从控制台/shell获取/设置限制,可以使用ulimit命令。在程序内部,系统调用getrlimit()/se

ruby - Puppet 失败并显示 : Cannot allocate memory - fork(2)

这是我的puppet命令:exec{'unzipData.zip':command=>'/usr/bin/unzip-qq-o/vagrant/modules/wls/files/Data.zip-d/weblogic/app',group=>'vagrant',user=>'vagrant',require=>File['/weblogic/app/WEB-INF'],}这是错误信息:Error:/Stage[main]/Deploy_webapp/Exec[unzipData.zip]/returns:changefromnotrunto0failed:Cannotallocate

linux - Linux下的DMA和I/O内存区域

我写这篇文章是因为我对DMA的行为有一些疑问。我正在阅读有关PCI布局以及设备驱动程序如何与卡交互的信息,我还阅读了有关DMA的信息。据我了解,PCI卡没有DMAController,而不是它们请求成为总线的主控,然后它们能够获取DMA地址并在内存和设备之间进行传输(通过总线)。这个DMA地址是RAM的一部分,实际上它是一个物理地址,在什么都不做之前你需要把它转换成你的驱动程序可以使用的东西,比如内核虚拟内存。我已经用这段代码检查过了:/*Virtualkerneladdress*/kernel_buff=pci_alloc_consistent(dev,PAGE_SIZE,&dma_

c - 为什么在 POSIX 中创建消息队列时出现错误 "Cannot Allocate Memory"?

为什么在POSIX中创建消息队列时出现“无法分配内存”错误? 最佳答案 Adrian的回答是正确的,但由于这是一个令人沮丧的常见错误,当第一次尝试将POSIX消息队列用于任何非平凡的事情时,在Linux上会遇到这个错误,我想我应该添加一些有用的细节。首先,要了解RLIMIT_MSGQUEUE资源限制,请参阅mansetrlimit中的公式:RLIMIT_MSGQUEUE(SinceLinux2.6.8)SpecifiesthelimitonthenumberofbytesthatcanbeallocatedforPOSIXmessa

linux - GNU malloc_info() : get really allocated memory?

我正在尝试调查大型多线程服务器的内存使用情况。根据mallinfo(),我得到arena=350M和fordblks=290M,这表明大部分空间实际上在malloc()内部被浪费了.malloc_info()函数提供了一个很好的XML数据结构,应该是不言自明的。不过,有人能给我解释一下吗是堆0特别的?是所有其他人所在的主要舞台吗?是block已分配、空闲/可用或两者兼而有之?什么是元素?使用mmap()/sbrk()分配的内存?什么是元素?可用内存?那呢??作为开始,我希望能够根据malloc()绘制应用程序分配的总内存,即所有已分配但尚未释放的内存。认为。

Linux PCIe DMA 驱动程序 (Xilinx XDMA)

我目前正在使用XilinxXDMA驱动程序(请参阅此处的源代码:XDMASource),并试图让它运行(在您询问之前:我已经联系了我的技术支持联系人和Xilinx论坛到处都是有同样问题的人)。但是,我可能在Xilinx的代码中发现了一个障碍,这对我来说可能是一个交易破坏者。我希望有一些我没有考虑的事情。首先,驱动程序有两种主要模式,AXI-MemoryMapped(AXI-MM)和AXI-Streaming(AXI-ST)。对于我的特定应用,我需要AXI-ST,因为数据将持续从设备中流出。驱动程序是为利用分散-聚集列表而编写的。在AXI-MM模式下,这是有效的,因为读取是相当随机的事件

Python 多处理 - 调试 OSError : [Errno 12] Cannot allocate memory

我面临以下问题。我正在尝试并行化更新文件的函数,但由于OSError:[Errno12]无法分配内存,我无法启动Pool()。我已经开始在服务器上环顾四周,这不像是我在使用一个旧的、弱的/实际内存不足的服务器。参见htop:此外,free-m显示除了~7GB的交换内存外,我还有足够的可用RAM:我尝试处理的文件也不是那么大。我将在下面粘贴我的代码(和堆栈跟踪),大小如下:使用的predictionmatrix数据帧占用了大约。80MB根据pandasdataframe.memory_usage()文件geo.geojson是2MB我该如何调试它?我可以检查什么以及如何检查?感谢您提供任