【问题标题】:Where is normal memory mappings?正常的内存映射在哪里?
【发布时间】:2015-07-08 21:36:44
【问题描述】:

在 QNX Neutrino RTOS 和 Blackberry10 OS (here) 的描述中,pthread_mutex_init() 是这样说的:

您应该只在普通内存中分配同步对象 映射。在某些处理器(例如某些 PPC 处理器)上,原子 诸如调用 pthread_mutex_lock() 之类的操作将导致错误,如果 控制结构分配在未缓存的内存中。

我已经从任何函数中定义了我的Mutex,并且在尝试执行pthread_mutex_init() 时出现“内存错误”错误。所以,我想知道“正常内存映射”和“未缓存内存”术语是什么意思?我应该在哪里定义我的Mutex 锁?

【问题讨论】:

    标签: synchronization posix mutex shared-memory qnx


    【解决方案1】:

    考虑到您使用的是 ARM 架构。

    ARM架构支持三种内存——

    1 - 强排序 - 不可缓存

    2 - 设备 - 不可缓存(用于内存映射外围设备)

    3 - 正常 - 可缓存

    根据您的描述,您应该从普通内存中分配 muxtex 结构。对于正常的程序执行,使用正常的内存。您的问题看起来与此无关。请检查内存分配函数返回值。

    有关ARM内存类型的详细说明,请访问ARM网站。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 2014-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多