linux指针核心已转储,c - 内存复制到uio mmap设备时出现总线错误 - 堆栈内存溢出...

我目前尝试通过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,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值