正常的内存映射在哪里?

时间:2015-07-08 21:36:45

标签: synchronization posix mutex shared-memory qnx

pthread_mutex_init()的QNX Neutrino RTOS和Blackberry10 OS(here)的描述中,有以下内容:

  

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

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

1 个答案:

答案 0 :(得分:0)

考虑到您使用的是ARM体系结构。

ARM体系结构支持三种类型的内存 -

1 - 强烈有序 - 不可缓存

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

3 - 正常 - 可缓存

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

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