我正在使用此字符设备驱动程序{{3}}来执行DMA。在文档中,作者说要访问驱动程序,您可以像这样打开设备文件
if ((fd = open("/dev/udmabuf0", O_RDWR)) != -1) {
buf = mmap(NULL, buf_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
/* Do some read/write access to buf */
close(fd);
}
我有两个问题。第一个是buf的类型,我假设它是char *而不是char [N],但我只是想确定。
第二个问题是如何实际进行阅读和写作。我可以通过简单地改变buf指向的字符来编写,假设它是一个指针吗?
buf = mmap(NULL, buf_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
buf = "I am doing some writing to dma";
如果是这种情况,buf会在内存buf映射到的情况下继续改变吗?
buf = mmap(NULL, buf_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
printf(buf) //"abcd"
sleep(10);
printf(buf) //"efgh"