我目前尝试通过memcopy访问UIO共享内存。
我的方法是:
打开相应的设备
通过mmap使用偏移量特殊N * getpagesize()映射内存
memcopy / memset指向从mmap返回的指针
在步骤2之后,我也尝试使用ftruncate导致错误。
memcopy / memset导致总线错误 ,通常是写出文件边界的标志。
通过cat / proc / 'pid' / maps我可以看到/ dev / uioX有一个映射。另外/ sys / class / uio / uioX / maps /有两个映射目录,我尝试访问其中的第二个( map1因此N = 1 )
我错过了什么吗? 我是否必须映射/ sys / class / uio / uioX / maps / map1 / size中指定的内存的完整大小?
我找不到通过memcopy访问内存的任何示例,是否有某些东西可以防止在UIO映射内存上进行memcopy?
资料来源
unsigned char* GetMemPtr(const char *name, unsigned long Size)
{
long fd;
long truncret;
void* MemPtr;
unsigned long offst;
printf("Opening: %s with size %u\n" , name, Size);
fd = open(name, O_RDWR);
if (fd < 0) {
printf("Error: open : %u : %s\n", fd,